此次**為對帶頭結點雙向鍊錶部分操作的函式實現:
程式**:
//對帶頭結點雙向鍊錶進行按元素刪除
void dlinklisterase(dlinknode** head,dlinktype value)
if(cur == (*head))else
}//對帶頭結點的雙向鍊錶進行按位置刪除
void dlinklistremove(dlinknode** head,dlinknode * pos)
if(cur == (*head))else
}//將帶頭結點的雙向鍊錶的元素全部刪除
void dlinklistremoveall(dlinknode** head)
}//求帶頭結點的雙向鍊錶的結點個數
size_t dlinklistsize(dlinknode* head)
dlinknode* cur = head->next;
while(cur!= head)
return count;
}//將帶頭結點的雙向鍊錶置空
void dlinklistempty(dlinknode** head)
if((*head)->next == (*head))
dlinknode* cur = (*head);
while(cur->next != (*head))
}檢測**:
void textdlinklistempty()
void textdlinklistsize()
void textdlinklistremoveall()
void textdlinklistremove()
void textdlinklisterase()
//主函式
int main()
檢測結果:
[chaiyandong@localhost shujujiegou]$ ./dlinklist1
*********dlinklistpushback*************
a b c d
*********dlinklistpopback*************
a b c
*********dlinklistpushfront*************
d c b a
*********dlinklistpopfront*************
b c d
*******dlinklistfind***********
expect:1actual:1
*********dlinklistinsert*************
z a b c d
*********dlinklistinsert*************
a z b c d
*********dlinklisterase*************
b c d
*********dlinklistremove*************
b c d
*********dlinklistremoveall*************
****dlinklistsize***********
4*********dlinklistempty*************
帶頭結點的雙向迴圈鍊錶的基本操作
定義與宣告 typedef int datatype typedef struct dlistnode node void dlistinit node phead 初始化 void dlistpushback node p,datatype data 尾插 void dlistpopback no...
雙向迴圈帶頭結點鍊錶的常見操作
include dlist.h include malloc.h include assert.h include pdlnode buydlist dldatatype data pnewnode pnext null 剛開始給節點並不知道位置所以給null pnewnode ppre null ...
鍊錶 帶頭結點的雙向迴圈鍊錶
還需改進 creat node這個函式應有返回型別,來判斷新建結點是否成功,不然主函式中不管成不成功都會訪問該節點成員。改了這個函式,在主函式中create node後要判斷是否成功,不成功就提示並退出函式,退出前別忘了還要釋放鍊錶!同時create link這個函式中也要判斷head是否申請成功,...