無表頭單鏈表的總結----動態建立鏈表,單鏈----
1 #include "head.h"
2 struct Student *creat()
3 {
4 struct Student *head, *p1, *p2;// 先開辟三個結構體指針,*head,(作為返回的頭指針)
5 p1 = p2 =(struct Student *) malloc(LEN);
6 scanf_s("%s %f", p1->num, N, &p1->score);//先讀取輸入的信息,據讀入的信息進行判斷
7 head = NULL; // 先使得頭指針指向空指針
8 n = 0; //用來計數多少個鏈表裡的成員
9 while (strcmp(p1->num, "0") != 0) //根據讀入的信息,“0”為輸入終止標號,如果不為
10 //0,則進行鏈表增加操作
11 {
12 ++n; //不終止,說明要增加一位成員
13 if (n == 1) head = p1; //先把開始開辟的地址賦給頭指針,因為接下來p1會後移,
14 //沒有頭指針信息
15 else p2->next = p1; //p1分兩種情況,當n=1,p1賦給頭指針,接下裡,p1鏈接
16 //上一個指針p2->next;
17 p2= p1; //完成鏈接後p2後移到p1處。
18 p1 = (struct Student *)malloc(LEN); //然後p1繼續開發內存存儲新成員;
19 scanf_s("%s %f", p1->num, N, &p1->score);//讀入新成員信息,返回到開頭,進行判讀
20 //讀入的信息
21 }
22 p2->next = NULL; //是p2的next作為結束標志,注意,這裡是不是p1,p1用來存儲“0”
23 //終止條件了
24 return head; //返回頭指針
25 }