日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(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 
#include 
using 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 &); 
 
 
};*/ 
templateclass 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(;indexnext ; 
          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(;indexnext; 
 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; 
} 
templatevoid 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}; 
   DLinkListDlist; 
   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(;idata =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(;inext ; 
   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(;inext ; 
   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