#include
"dlist.h"
#include
"malloc.h"
#include
"assert.h"
#include
pdlnode buydlist
(dldatatype data)
*pnewnode->_pnext =
null
;//剛開始給節點並不知道位置所以給null
*pnewnode->_ppre =
null;}
}void
dlistinit
(pdlnode* phead)
//二級指標,為了通過形參去改變實參的值必須得用指標,
// 如果本身就是指標則用指標的指標
*(phead)
->_pnext =
*phead;
*(phead)
->_ppre =
*phead;
}void
testdlist
(pdlnode* phead)
//對init測試一下
void
dlistpushback
(dslist* s, sdatatype data)
//尾插--------有e理解
void
dlistpopback
(dslist* s)
//尾刪------------e理解
void
dlistpushfront
(dslist* s, sdatatype data)
//頭插-----f理解
void
dlistpopfront
(dslist* s)
//頭刪
void
dlistinsert
(pdlnode pos, dldatatype data)
//任意位置的插入插在「當前位置的前面」
void
dlisterase
(pdlnode data)
//任意位置的刪除
void
dlistclear
(pdlnode phead)
//清空鍊錶
phead->_pnext = phead;
phead->_ppre = phead;
}void
dlistdestroy
(pdlnode* phead)
//銷毀鍊錶,改變指標的指向,所以得用二級指標
雙向迴圈帶頭節點鍊錶
include include struct dblnode typedef struct dblnode dblnode typedef struct dblnode dbllink void create link dbllink head 建立鍊錶 void create newnode db...
資料結構 雙向迴圈帶頭結點鍊錶
前面我們寫過了不帶頭結點的單鏈表,由於沒有頭結點,在對單鏈表進行頭插 刪的時候需要傳入二級指標 在需要進行尾插 刪的時候,需要先根據頭指標找到頭結點,然後從頭往後遍歷找到最後乙個結點再進行相應操作。而我們今天要寫的雙向迴圈帶頭結點鍊錶,相對於不帶頭結點的單鏈表做增刪時,將會方便許多。typedef ...
雙向迴圈帶頭鍊錶的基礎操作 增刪改查
typedef int cldatatype 結點型別 typedef struct listnode listnode 鍊錶的頭 typedef struct list list 建立乙個雙向迴圈鍊錶結點 listnode buylistnode cldatatype x 初始化雙向迴圈帶頭鍊錶 ...