C++实现的链表类实例
本文实例讲述了C++实现的链表类。分享给大家供大家参考。具体如下:
#include<iostream> usingnamespacestd; classlinklist { private: structnode { intdata; node*link; }*p; public: linklist(); voidappend(intnum); voidadd_as_first(intnum); voidaddafter(intc,intnum); voiddel(intnum); voiddisplay(); intcount(); ~linklist(); }; linklist::linklist() { p=NULL; } voidlinklist::append(intnum) { node*q,*t; if(p==NULL) { p=newnode; p->data=num; p->link=NULL; } else { q=p; while(q->link!=NULL) q=q->link; t=newnode; t->data=num; t->link=NULL; q->link=t; } } voidlinklist::add_as_first(intnum) { node*q; q=newnode; q->data=num; q->link=p; p=q; } voidlinklist::addafter(intc,intnum) { node*q,*t; inti; for(i=0,q=p;i<c;i++) { q=q->link; if(q==NULL) { cout<<"\nTherearelessthan"<<c<<"elements."; return; } } t=newnode; t->data=num; t->link=q->link; q->link=t; } voidlinklist::del(intnum) { node*q,*r; q=p; if(q->data==num) { p=q->link; deleteq; return; } r=q; while(q!=NULL) { if(q->data==num) { r->link=q->link; deleteq; return; } r=q; q=q->link; } cout<<"\nElement"<<num<<"notFound."; } voidlinklist::display() { node*q; cout<<endl; for(q=p;q!=NULL;q=q->link) cout<<endl<<q->data; } intlinklist::count() { node*q; intc=0; for(q=p;q!=NULL;q=q->link) c++; returnc; } linklist::~linklist() { node*q; if(p==NULL) return; while(p!=NULL) { q=p->link; deletep; p=q; } } intmain() { linklistll; cout<<"No.ofelements="<<ll.count(); ll.append(12); ll.append(13); ll.append(23); ll.append(43); ll.append(44); ll.append(50); ll.add_as_first(2); ll.add_as_first(1); ll.addafter(3,333); ll.addafter(6,666); ll.display(); cout<<"\nNo.ofelements="<<ll.count(); ll.del(333); ll.del(12); ll.del(98); cout<<"\nNo.ofelements="<<ll.count(); return0; }
希望本文所述对大家的C++程序设计有所帮助。