模板实现单向链表
/************************************WZ?ASUST???2016模板實(shí)現(xiàn)單向鏈表************************************/#include"sts.h"
template?<class?T>
struct?node
{
public:node(const?T?&d):next(NULL),data(d){}
T?data;
node<T>?*next;
};
template?<class?T>
class?dlist
{
private:?node<T>*?head;node<T>*?tail;
public:dlist():head(NULL),tail(NULL){};~dlist(){node<T>*cur=head;while(cur){node<T>*del=cur;cur=cur->next;delete?del;}}void?print(){node<T>*cur=head;while(cur){cout<<cur->data<<?"?";cur=cur->next;}cout<<"ok"<<endl;}dlist?&?operator=(const?dlist?<T>?&?dl)
{
if(this!=&dl){head=dl.head;tail=dl.tail;node<T>*dlcur=dl.head;node<T>*cur=dlcur;
int?xx=length()-1;while(xx--){dlcur=dlcur->next;dlcur=cur;cur=cur->next;}}}
int?length()
{
int?ret=0;
if(head)
{node<T>*cur=head;
while(cur)
{
ret++;cur=cur->next;
}
return?ret;
}
else?return?0;
}void?pushback(const?T?&d)
{
if(head==NULL){head=new?node<T>(d);tail=head;}
else{tail->next=new?node<T>(d);tail=tail->next;}
}
T?popback()
{
if(head==NULL){return?0;}
else{return?tail->data;}}
void?pushfront(const?T?&d)
{
if(head==NULL){head=new?node<T>(d);tail=head;}
else{node<T>?*add=new?node<T>(d);add->next=head;head=add;}
}
T?popfront()
{
if(head==NULL){return?0;}
else{return?head->data;}}
void?insert(int?x,?const?T?d)
{
if(x<0||x<length()){x=x-1;node<T>?*add=new?node<T>(d);node<T>?*cur=head;if(head){while(x--){cur=cur->next;}add->next=cur->next;cur->next=add;}}
}
void?reverse()
{int?len=length();node<T>?*tmp=NULL;
if(head){node<T>*?p?=?head;node<T>*?q?=?head;??node<T>*?th=NULL;while(len--){q=p;p=p->next;q->next=th;th=q;}head=th;
}elsereturn;}
void?paixu()
{int?len=length();int?state=1;T??tmp;
//len>1;while(len--&&state){node<T>*?p?=?head;?node<T>*?q=p->next;while(q){if(p->data?>=?q->data){?tmp=q->data;q->data=p->data;p->data=tmp;?}else?state=1;p=p->next;?????q=q->next;}}
}
};void?test()
{
dlist<int>?int_dlist;
cout<<"**?1?:?***************"<<endl;int_dlist.pushback(11);int_dlist.pushback(22);int_dlist.pushback(33);int_dlist.pushback(44);int_dlist.print();
cout<<"***?2?:**************"<<endl;int_dlist.pushfront(55);int_dlist.pushfront(66);int_dlist.pushfront(77);int_dlist.print();
cout<<"***?3?:**************"<<endl;cout<<int_dlist.popfront()<<endl;cout<<int_dlist.popback()<<endl;
cout<<"***?4?:**************"<<endl;dlist<int>?int_dlist2;
int_dlist2=int_dlist;int_dlist.print();
cout<<"**?5?:?***************"<<endl;
cout<<int_dlist.length()<<endl;}
int?main()
{
//?test();
dlist<int>?int_dlist;int_dlist.pushback(11);int_dlist.pushback(22);int_dlist.pushback(44);int_dlist.pushback(33);int_dlist.print();cout<<"**?6?:?***************"<<endl;
int_dlist.reverse();
int_dlist.print();
cout<<"**?7?:?***************"<<endl;
int_dlist.insert(3,99);
int_dlist.paixu();
int_dlist.print();return?0;
}
轉(zhuǎn)載于:https://blog.51cto.com/sts609/1758672
總結(jié)
- 上一篇: 什么叫活着!
- 下一篇: linux工作常用软件