首页 > 代码库 > 无表头单链表的总结----动态建立链表

无表头单链表的总结----动态建立链表

 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 }

 

无表头单链表的总结----动态建立链表