#include "head.h" struct Student *creat() { struct Student *head, *p1, *p2;//先开辟三个结构体指针,*head,(作为返回的头指针) p1 = p2 =(struct Student *) malloc(LEN); scanf_s("%s %f", p1->num, N, &p1->score);//先读取输入的信息,据读入的信息进行判断 head = NULL;//先使得头指针指向空指针 n = 0;//用来计数多少个链表里的成员 while (strcmp(p1->num, "0") != 0)//根据读入的信息,“0”为输入终止标号,如果不为0,则进行链表增加操作 { ++n; //不终止,说明要增加一位成员 if (n == 1) head = p1; //先把开始开辟的地址赋给头指针,因为接下来p1会后移,没有头指针信息 else p2->next = p1; //p1分两种情况,当n=1,p1赋给头指针,接下里,p1链接上一个指针p2->next; p2 = p1;//完成链接后p2后移到p1处。 p1 = (struct Student *)malloc(LEN);//然后p1继续开发内存存储新成员; scanf_s("%s %f", p1->num, N, &p1->score);//读入新成员信息,返回到开头,进行判读读入的信息 } p2->next = NULL;//是p2的next作为结束标志,注意,这里是不是p1,p1用来存储“0”终止条件了 return head;//返回头指针 }
文章类型: | VC&C++ |
关键词: | 无表头,单链表,动态,建立链表 |
内容摘要: |
无表头单链表的总结----动态建立链表
2017/10/25 14:51:58 来源:apple 阅读: