无表头单链表的总结----删除节点
生活随笔
收集整理的這篇文章主要介紹了
无表头单链表的总结----删除节点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 #include "head.h"
2 struct Student*del(struct Student*head,char num[N])
3 {
4 struct Student*p1, *p2;
5 if (head == NULL) //若鏈表為空,則無需處理
6 {
7 printf("\nlist NULL!\n");
8 return (head);
9 }
10 p2 = p1 = head;
11 while (strcmp(num, p1->nun) != 0 && p1->next != NULL)//重要!循環終止的條件是找到
12 //了要刪除的節點或者搜尋到了最后一個節點
13 {
14 p2 = p1; //循環中若,沒找到,則指針往后移一位
15 p1 = p1->next;
16 }
17 if (strcmp(num, p1->nun) == 0) //循環結束分兩種情況,1是找到,找到也分兩種情況
18 {
19 if (p1 == head) head = p1->next; //第一個節點就是我們要找到
20 else p2->next = p1->next; //除第一節點外的處理方式(包括末尾節點)
21 printf("delete:%s\n", p1->nun);
22 n--; //刪除一個就要成員數減一個;
23 }
24 else printf("%s not been found!\n", num); //2,沒找到怎完事
25 return head;
26 }
?
轉載于:https://www.cnblogs.com/xinlovedai/p/6216253.html
總結
以上是生活随笔為你收集整理的无表头单链表的总结----删除节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 44 个 JavaScript 变态题解
- 下一篇: all ,any,abs的使用