區別:1. 無頭單向非迴圈鍊錶:結構簡單,一般不會單獨用來存資料。實際中更多是作為其他資料結構的子結
構,如雜湊桶、圖的鄰接表等等。另外這種結構在筆試面試**現很多。
2. 帶頭雙向迴圈鍊錶:結構最複雜,一般用在單獨儲存資料。實際中使用的鍊錶資料結構,都是帶頭雙向
迴圈鍊錶。另外這個結構雖然結構複雜,但是使用**實現以後會發現結構會帶來很多優勢,實現反而簡單
順序表:
空間連續,支援連續訪問
中間或前面部分的插入刪除時間複雜度為o(n);並且增容的代價比較大
鍊錶:
以節點為位元組儲存,不支援隨機訪問
任意位置插入刪除時間複雜度都為o(1);插入乙個開闢乙個空間
**的實現
#include#includetypedef int ldatatype;
//雙向節點
typedef struct listnode
listnode;
//雙向帶頭迴圈鍊錶
typedef struct list
list;
void initlist(list* lst)
struct listnode* creatnode(ldatatype val)
//尾節點:head->_prev
//尾插(o(1))
void listpushback(list* lst, ldatatype val)
//尾刪(o(1))
void listpopback(list* lst)
void printlist(list* lst)
printf("\n");
}void listpushfront(list* lst, ldatatype val)
//頭刪
void listpopfront(list* lst)
//頭插:insert(head->next,val)
//尾插:insert(head,val)
//新的資料放在當前節點的前面
void listinsert(listnode* node, ldatatype val)
void listerase(listnode* node)
void listdestroy(list* lst)
free(lst->_head);
lst->_head=null;
}void listfind(list* lst, ldatatype x)
lst->_head = lst->_head->_next; }}
void test()
int main()
帶頭雙向迴圈鍊錶
首先,我們來看一下帶頭雙向迴圈鍊錶的結構 目錄 帶頭雙向迴圈鍊錶結點的定義 相關操作介面 1 初始化 獲取乙個結點 2 銷毀鍊錶 3 尾插 4 頭插 5 指定元素查詢 6 任意位置插入 7 尾刪 8 頭刪 9 任意位置刪除 10 列印鍊錶 附上完整 typedef int datatype type...
帶頭雙向迴圈鍊錶
帶頭雙向迴圈鍊錶的增刪查改實現 帶頭 雙向 迴圈鍊錶增刪查改實現 typedef int ltdatatype typedef struct listnode listnode 建立乙個新節點 listnode buylistnode ltdatatype x 建立返回鍊錶的頭節點 listnode...
帶頭雙向鍊錶
ifndef list h define list h include stdio.h include assert.h include malloc.h include string.h typedef int datatype typedef struct listnode list,plist...