新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
C++實(shí)現(xiàn)雙向鏈表的實(shí)例
雙向鏈表C++ 的實(shí)現(xiàn)

創(chuàng)新互聯(lián)公司長(zhǎng)期為上千家客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為光明企業(yè)提供專(zhuān)業(yè)的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),光明網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
本文是通過(guò)C++ 的知識(shí)實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)中的雙向鏈表,這里不多說(shuō) 了,代碼注釋很清楚,
實(shí)現(xiàn)代碼:
//double LinkList implement with C++ template #includeusing namespace std; /*template class DBListADT { public: virtual void Append(const Type &)=0; virtual void Insert(const Type &)=0; virtual void Remove(const Type &)=0; }; template class DLinkListNode:public DBListADT //此處必須為實(shí)現(xiàn)的類(lèi)型,當(dāng)然以派生類(lèi)的模板類(lèi)型也可以,但是不能是Type { public: void Append(const T &);//這邊也需要是當(dāng)前類(lèi)的類(lèi)型,不能為T(mén)ype void Insert(const T &); void Remove(const T &); };*/ template class DLinkList; template class DNode { friend class DLinkList ;//指定前需聲明 public: DNode(){next=NULL;prior=NULL;} ~DNode(){} private: DNode *next; DNode *prior; Type data; }; template class DLinkList { public: DLinkList() { // head=new DNode [sizeof(DNode )]; head=new DNode ; } ~DLinkList() { if(head->next==NULL) delete head; else { DNode *p=head->next; DNode *s=NULL; while(p) { s=p->next ; delete p; p=s; } } } void DeleteElement(size_t position) { DNode *p=head->next; size_t index=1; for(;index next ; if(p==NULL) return ; p->prior ->next =p->next ; p->next ->prior =p->prior ; delete p; } void InsertElement(T data,size_t position); void CreateDLinkList(T a[],int n); void PrintDLinkList(); private: DNode *head; }; template void DLinkList :: InsertElement (T data,size_t position) { DNode *p=head->next; size_t index=1; for(;index next; if(p==NULL) return; //DNode *s=new DNode [sizeof(DNode )]; DNode *s=new DNode ; s->data=data; s->next=p; s->prior=p->prior; p->prior->next=s; p->prior=s; } template void DLinkList ::CreateDLinkList(T a[],int n) { DNode *p=head; DNode *s=NULL; int i=0; for(;i [sizeof(DNode)]; s=new DNode ; s->data=a[i]; p->next=s; s->prior=p; p=s; } s->next=NULL; } template void DLinkList ::PrintDLinkList () { DNode *p=head->next; while(p) { cout< data< next; } } int main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; DLinkList Dlist; Dlist.CreateDLinkList(a,10); Dlist.DeleteElement (3); Dlist.InsertElement(3,3); Dlist.PrintDLinkList(); return 0; } //double LinkList implement with C++ Class //************************************************************ /*#include using namespace std; class Node { friend class List; public: //Node(int a):next(NULL),prior(NULL),data(a){} Node(){} private: Node *next; Node *prior; int data; }; class List { public: List() { cout<<"create head DBLinkList"< next==NULL) { delete head; } else { Node *p=head->next; Node *s; delete head; while(p) { s=p->next ; delete p; p=s; } } cout<<"destructor called to clear DBLinkList"< next =NULL; Node *s,*p=head; int i=0; for(;i data =a[i]; p->next =s; s->prior =p; p=s; } s->next =NULL; } void List::PrintDList() { Node *p=head->next ; while(p) { cout< data < next ; } } void List::DeleteElemData(int position) {//可以通過(guò)重載delete運(yùn)算符來(lái)達(dá)到這個(gè)效果,則直接用delete就OK了 Node *p=head->next ; //while(p!=NULL&&p->data !=data) // p=p->next ; int i=1; for(;i next ; if(p==NULL) return ; p->prior ->next =p->next ; p->next ->prior =p->prior ; delete p; } void List::InsertElement (int data,int position) {//可以重載new運(yùn)算符來(lái)達(dá)到這個(gè)效果,則直接用new就OK了 Node *p=head->next ; int i=1; for(;i next ; Node *s=new Node[sizeof(Node)]; s->data =data; s->prior =p->prior ; s->next =p; p->prior ->next =s; p->prior =s; } int main() { List Dlist; int a[10]={1,2,3,4,5,6,7,8,9,10}; Dlist.CreateDoubleLink (a,10); Dlist.DeleteElemData(3); Dlist.InsertElement (3,3); Dlist.PrintDList (); return 0; }*/ //*************************************************************************************
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
當(dāng)前文章:C++實(shí)現(xiàn)雙向鏈表的實(shí)例
文章分享:http://www.dlmjj.cn/article/joocpg.html


咨詢(xún)
建站咨詢(xún)
