雙向迴圈帶頭鍊錶的基礎操作 增刪改查

2021-08-28 18:50:06 字數 2468 閱讀 4195

typedef

int cldatatype;

//結點型別

typedef

struct listnode

listnode;

//鍊錶的頭

typedef

struct list

list;

//建立乙個雙向迴圈鍊錶結點

listnode*

buylistnode

(cldatatype x)

;//初始化雙向迴圈帶頭鍊錶

void

listinit

(list* pcl)

;//銷毀雙向迴圈帶頭鍊錶

void

listdestory

(list* pcl)

;//尾插

void

listpushback

(list* pcl, cldatatype x)

;//頭插

void

listpushfront

(list* pcl, cldatatype x)

;//指定位置插入結點

void

listinsert

(listnode* pos, cldatatype x)

;//尾刪

void

listpopback

(list* pcl)

;//頭刪

void

listpopfront

(list* pcl)

;//指定位置刪除(不能是頭結點)

void

listerase

(list* pcl, listnode* pos)

;//遍歷列印鍊錶

void

listprint

(list* pcl)

;//鍊錶的長度

intlistsize

(list* pcl)

;//判斷鍊錶是否為空(為空返回0,非空返回1)

intlistempty

(list* pcl)

;//尋找指定資料的結點(找到返回位址,找不到返回null)

listnode*

findlistnode

(list* pcl, cldatatype x)

;

//建立乙個雙向迴圈鍊錶結點

listnode*

buylistnode

(cldatatype x)

cur->_data = x;

cur->_next =

null

; cur->_prev =

null

;return cur;

}//初始化雙向迴圈帶頭鍊錶

void

listinit

(list* pcl)

//銷毀雙向迴圈帶頭鍊錶

void

listdestory

(list* pcl)

free

(pcl->_head)

; pcl->_head =

null;}

//尾插

void

listpushback

(list* pcl, cldatatype x)

//頭插

void

listpushfront

(list* pcl, cldatatype x)

//指定位置前面插入結點

void

listinsert

(listnode* pos, cldatatype x)

//尾刪

void

listpopback

(list* pcl)

//頭刪

void

listpopfront

(list* pcl)

//指定位置刪除結點

void

listerase

(list* pcl, listnode* pos)

//遍歷列印鍊錶

void

listprint

(list* pcl)

printf

("over\n");

}//鍊錶的長度

intlistsize

(list* pcl)

return count;

}//判斷鍊錶是否為空(為空返回0,非空返回1)

intlistempty

(list* pcl)

//尋找指定資料的結點(找到返回位址,找不到返回null)

listnode*

findlistnode

(list* pcl, cldatatype x)

cur = cur->_next;

}return

null

;}

雙向迴圈帶頭節點鍊錶

include include struct dblnode typedef struct dblnode dblnode typedef struct dblnode dbllink void create link dbllink head 建立鍊錶 void create newnode db...

帶頭雙向迴圈鍊錶增刪操作

標頭檔案list.h存放函式宣告 ifndef list h define list h include include include typedef int ltdatatype typedef struct listnodelistnode typedef struct listlist 初始...

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

include dlist.h include malloc.h include assert.h include pdlnode buydlist dldatatype data pnewnode pnext null 剛開始給節點並不知道位置所以給null pnewnode ppre null ...