用C 封裝雙向迴圈鍊錶(class)

2021-08-19 10:14:49 字數 1614 閱讀 7599

#include

using namespace std;

typedef int datatype;

struct node  //結點

};class list

list(const list& l) //拷貝

:_phead(new node)

}list& operator=(list& l)//賦值運算子過載   

~list() //析構

deletepcur;

_phead = null;

}void pushback(datatype data) //尾插

void popback()  //尾刪

return;

}void pushfront(datatype data)  //頭插

void popfront() //頭刪

return;

}void insert(node* pos, datatype data) //任意位置插入

void erase(node* pos)  //任意位置刪除

size_t size()   //鍊錶大小

return count;

}return 0;

}int empty()const  //鍊錶是否為空

return 1;

}node *find(datatype data)

pcur = pcur->_pnext;

}return null;

}void printlist()

cout << "null" << endl;

}private:

node* _phead;  

};int main()

{list l1;

node *pos;

size_t size;

l1.pushback(3);

l1.pushback(4);

l1.pushback(5);

l1.pushback(6);

l1.pushback(7);

l1.printlist();

l1.popback();

l1.popback();

l1.printlist();

l1.pushfront(2);

l1.pushfront(1);

l1.printlist();

l1.popfront();

l1.popfront();

l1.printlist();

pos = l1.find(4);

l1.insert(pos, 8);

l1.printlist();

l1.erase(pos);

l1.printlist();

size=l1.size();

list l2(l1);

l2.printlist();

list l3;

l3 = l1;

l3.printlist();

return 0;

若是對於雙向鍊錶的尾插、尾刪等上述操作不明白,可以參照我以前寫的部落格

若是對深拷貝不理解的,可以參照我以前寫的部落格

希望對大家有所幫助!!!!!!

雙向鍊錶封裝

雙向鍊錶 function doublelinkedlist 煉表頭節點 this.head null 鍊錶尾節點 this.fail null 鍊錶長度 this.length 0 在鍊錶尾部新增元素 var newelement new node value if this.head else ...

雙向鍊錶和雙向迴圈鍊錶

和單向鍊錶相比,多了乙個前驅結點。如果他為空,那麼next和prior都指向自己。而對於雙迴圈鍊錶,只需要最後乙個元素的next指向head next,head next的prior指向最後乙個節點即可。新節點s插入鍊錶,s next給p結點,s prior給p prior,然後,p prior n...

迴圈鍊錶,雙向鍊錶

迴圈鍊錶 迴圈鍊錶與順序鍊錶之間的區別 迴圈鍊錶最後乙個資料的next指標域不為空,而是指向頭結點,其他基本操作大體相同,只是在判斷表結束的條件變為判斷節點的引用域是否為頭引用 雙向鍊錶 author neosong date oct 10,2017 4 43 01 pm program of in...