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 ...