mylist.h //標頭檔案 struct node { int idata_item; struct node *pnode;} //結點的定義 class mylist { private: //成員變數的說明 struct node* _at_front; struct node* _at_end; //定義該變數是為了連結串列的連結 int _size; public: struct node* get_front(){return _at_front;} struct node* get_end(){return _at_end;} int size(void){return _size;} void insert_front(int) void insert_end(int) bool insert(struct node*,int) int remove(int) void remove_front(void) void remove_end(void) struct node* find(int) void display(void) void reverse(void) bool equality(mylist&) mylist& concat(mylist&) mylist():_at_front(0),_at_end(0),_size(0) //建構函式 ~mylist() } 連結串列的實現如下: mylist.cpp //連結串列實現檔名 //insert實現程式碼 bool mylist::insert(struct node* pnode,int a) {assert(pnode!=0); struct node* temp=new struct node; if(!temp) {temp->idata_item=a; temp->pnext=pnode->pnext; pnode->pnext=temp;} return true; else cerr<<"non memory allocate"<<endl; return false;} //display實現程式碼 void mylist::display(void) {if(_size==0) cout<<"mylist is empty"<<endl; else { struct node *iter=_at_front; for(int i=1;i<=_size;i++) { cout<<iter->idata_item<<" "; iter=iter->pnext;} } } //reverse實現程式碼 void mylist::reverse(void) {struct node *temp; temp=_at_front; _at_front=_at_end; _at_end=temp; while( } //remove實現程式碼 int mylist::remove(int a) { struct node *iter1=_at_front; struct node *iter2=0; for(int i=1;i<=_size;i++) { if(iter1->idata_item!=a) iter2=iter1; iter1=iter1->pnext; else iter2=iter1->pnext; delete iter1; _size--; return 1; } return 0;} //insert_end實現程式碼 void mylist::insert_end(int a) { struct node* temp=new struct node; temp->idata_item=a; if(!_at_end) { _at_front=_at_end=temp; _size++; } else {_at_end->pnext=temp; _at_end=temp; _size++; } } //insert_front實現程式碼 void mylist::insert_front(int a) {struct node* temp=new struct node; temp->idata_item=a; if(!_at_front) {_at_front=_at_end=temp; _size++; } else {temp->pnext=_at_front; _at_front=temp; _size++;} }
連結串列是資料結構的知識,現在我們用C++的類來實現封裝.
對連結串列類分析如下.
連結串列類的成員變數(private)
struct node *_at_front;
struct node *_at_end;
int _size;
連結串列中結點,所以定義結點如下:
struct node
{ int idata_item;
struct node *pnext;}
連結串列所支援的操作:
insert 插入一個結點到指定的結點後;
remove 移去一個結點;
find 查詢一個結點;
reverse 翻轉一個連結串列;
size 得到連結串列中結點的個數;
display 連結串列的輸出;
equality 連結串列相等的判斷;
concat 兩個連結串列連結在一起;
以上是連結串列類的有關操作,另外加上建構函式和解構函式;
連結串列的宣告如下: