雙向迴圈帶頭結點鍊錶的常見操作

2021-09-23 18:21:29 字數 1294 閱讀 8251

#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 初始化雙向迴圈帶頭鍊錶 ...