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 }