#include<iostream>
using namespace std;
class A
{
};
class B
{
char ch;
virtual void func0() { }
};
class C
{
char ch1;
char ch2;
virtual void func() { }
virtual void func1() { }
};
class D: public A, public C
{
int d;
virtual void func() { }
virtual void func1() { }
};
class E: public B, public C
{
int e;
virtual void func0() { }
virtual void func1() { }
};
class my_c
{
int c;
};
class a1
{
//virtual void func();
};
class a2:public virtual a1
{
//virtual void foo();
};
template <typename T> class MakeFinal
{
friend T;
private :
MakeFinal() {}
~MakeFinal() {}
};
class FinalClass2 : virtual public MakeFinal<FinalClass2>
{
public :
FinalClass2() {}
~FinalClass2() {}
};
/*class Try : public FinalClass2
{
public :
Try() {}
~Try() {}
};*/
class CommonBase
{
int co;
virtual void print0() { }
};
class Base1: virtual public CommonBase
{
public:
virtual void print1() { }
virtual void print2() { }
private:
int b1;
};
class Base2: virtual public CommonBase
{
public:
virtual void dump1() { }
virtual void dump2() { }
private:
int b2;
};
class Derived: public Base1, public Base2
{
public:
void print2() { }
void dump2() { }
virtual void dumpD() { }
private:
int d;
};
int str_cmp(string left,string right)
{
int i=0;
while(left[i]==right[i])
{
if(!left[i])
return 0;
i++;
}
return left[i]-right[i];
}
string str_compress(string s)
{
//aabbbccde
//a2b3c2de
string dst;
int i=0,count=1;
char count2str[10]={0};
for(;i<s.length();i++)
{
char temp=s[i];
if((i+1<s.length()) &&(s[i]==s[i+1]))
{
count++;
}
else
{
if(count>=2)
{
itoa(count,count2str,10);
dst+=count2str;
dst.append(s,i,1);
count=1;
}
else
{
dst.append(s,i,1);
}
}
}
return dst;
}
typedef struct node
{
int data;
node *next;
}Node;
void add(Node * in,int data)
{
in->next=new Node;
in->next->data=data;
in->next->next=NULL;
}
void destroy(Node *head)
{
Node *in;
while(head)
{
in=head->next;
delete head;
head=in;
}
}
Node * ReverseLinList(Node *head)
{
Node *cur_head,*pre;
if(!head)
return NULL;
if(!(head->next))
return head;
pre=head->next;
cur_head=head;
while(pre)
{
head->next=pre->next;
pre->next=cur_head;
cur_head=pre;
pre=head->next;
}
return cur_head;
}
Node * LinList_BubbleSort(Node *head)
{
//Increase,断开链接
Node *cur_head=NULL,*pre=head,*cur,*pre_pre;
if(!head||!(head->next))
return head;
pre=head;
cur=head->next;
pre_pre=NULL;
while(cur)
{
if(pre->data>cur->data)
{
//swap
pre_pre->next=cur;
pre->next=cur->next;
cur->next=pre;
pre_pre=cur;
cur=pre->next;
}
}
}
int main(void)
{
Node *head,*first;
head=new Node;
first=head;
head->data=2;
//head=head->next;
add(head,3);
head=head->next;
add(head,4);
first=ReverseLinList(first);
//destroy(first);
cout<<"A="<<sizeof(A)<<endl; //result=1
cout<<"B="<<sizeof(B)<<endl; //result=8
cout<<"C="<<sizeof(C)<<endl; //result=8
cout<<"D="<<sizeof(D)<<endl; //result=12
cout<<"E="<<sizeof(E)<<endl; //result=20
cout<<"my"<<sizeof(my_c)<<endl;
cout<<"a1 "<<sizeof(a1)<<"a2 "<<sizeof(a2)<<"dev "<<sizeof(Derived)<<endl;
cout<<strcmp("ab","abc")<<str_cmp("ab","abc");
//str_compress("aabbbccde");
str_compress("aabbbcccc");
return 0;
}