1. 程式人生 > 其它 >無需遍歷連結串列節點資料尾插

無需遍歷連結串列節點資料尾插

無需遍歷的連結串列尾插法

由於課程需要運用連結串列的相關知識

便在中國大學慕課(https://www.icourse163.org/course/ZJU-9001)以及嗶哩嗶哩(https://www.bilibili.com/video/BV1sJ411E7St?share_source=copy_web

中查找了相關的視訊,其中於翁愷老師課程的視訊中發現了這一方法,個人覺得比較簡便,於是寫了出來

程式碼如下:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 // 用於忽略(消除)Visual Studio中的警告
 5 #pragma
warning(disable:4996) 6 7 typedef struct tagNode { 8 int value; 9 struct tagNode* next; 10 }Node; 11 12 typedef struct { 13 Node* head; 14 Node* tail; 15 }List; 16 17 /* 18 * 尾插法插入資料,構成連結串列 19 */ 20 void NodeTailInsert(List* head, int number); 21 22 int main() { 23 24 // 定義一個連結串列list和數number
25 List list; 26 int number; 27 28 // 初始化連結串列 29 list.head = NULL; 30 list.tail = NULL; 31 32 do { 33 scanf("%d", &number); 34 if (number != -1) { 35 NodeTailInsert(&list, number); 36 } 37 } while (number != -1); 38 39 return
0; 40 } 41 42 43 void NodeTailInsert(List* pList, int number) 44 { 45 // 為新節點申請記憶體 46 Node* data = (Node*)malloc(sizeof(Node)); 47 48 // 檢查記憶體申請是否失敗 49 if (data == NULL) { 50 exit(0); 51 } 52 53 data->value = number; 54 data->next = NULL; 55 56 // 判斷tail是否為空 57 if (pList->tail != NULL) { 58 pList->tail->next = data; 59 } 60 else { 61 pList->head = data; 62 } 63 64 // 將data的地址賦值給tail,使的tail始終指向最新的尾結點 65 pList->tail = data; 66 67 } 68 69 // 11 12 13 14 15 -1 70 // 測試資料
View Code

因筆者初學C語言,如有錯誤之處,歡迎在評論區指出

(媽耶,這排版真醜)

2022-04-20

20:11:27