日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单链表之无头和有头--逆序

發布時間:2024/4/13 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单链表之无头和有头--逆序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在介紹單鏈表逆序操作之前,首先好好地介紹下有頭與無頭單鏈表的區別:
一、概念辨析
線性表的插入刪除需要移動大量的元素,因此引入鏈表(本文討論單鏈表)的概念,鏈表元素之間通過“鏈”來鏈接,因此插入和刪除時不需要大量的移動元素,而只需要改變“鏈”的關系即可。

(1)頭指針:通常使用“頭指針”來標識一個鏈表,如單鏈表L,頭指針為NULL的時表示一個空鏈表。
頭結點:在單鏈表的第一個結點之前附加一個結點,稱為頭結點。頭結點的Data域可以不設任何信息,也可以記錄表長等相關信息。
注意:無論是否有頭結點,頭指針始終指向鏈表的第一個結點。如果有頭結點,頭指針指向頭結點。
(2)引入頭結點的優勢:
剛剛提到,鏈表可以沒有頭結點,但是必須要有頭指針,因為要用頭指針來標識一個鏈表。設鏈表的頭指針為Head。除了頭結點之外,還需要一個指向鏈表一般元素的指針pNode(因為Head只能指向表頭,不能指向其他元素,故需要另設指針)。
1.單鏈表之有頭–逆序
head頭指針指向鏈表的第一個節點,即是頭結點。
p_cur指針指向頭結點的后一個結點,即是首元結點。
p_next始終指向p_cur所指結點的下一個結點。
代碼如下:
int linklist_reverse(node_t **head)
{
node_t *p_cur;
node_t *p_next;

if(*head == NULL) {printf("head is NULL\n");return FAILED; }p_cur = (*head)->next; (*head)->next = NULL;while(p_cur) {p_next = p_cur->next;p_cur->next = (*head)->next;(*head)->next = p_cur;p_cur = p_next; }return SUCCESS;

}
2.單鏈表之無頭–逆序
head頭指針指向鏈表的第一個節點,這里就是鏈表存放數據的第一個節點。
p_cur指針指向頭結點的后一個結點,即是第二個結點。
p_next始終指向p_cur所指結點的下一個結點。
void linklist_reverse(node_t **head)
{
node_t *p_cur = (*head)->next;
node_t *p_next;

if(p_cur == NULL || *head == NULL)return;(*head)->next = NULL;while(p_cur) {p_next = p_cur->next;p_cur->next = *head;*head = p_cur;p_cur = p_next; }

}

總結

以上是生活随笔為你收集整理的单链表之无头和有头--逆序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。