C语言:建立动态链表
2015-04-10 10:28
232 查看
先贴代码,再做分析:
思路是让p1指向新开辟的结点,p2指向链表中最后一个结点,让p1指向的结点链接在p2所指向结点的后面,用p2->next = p1实现。
#include<stdio.h> typedef struct Student{ long num; float score; struct Student *next; } Student; int n; Student * create(){ Student *head,*p1,*p2; n = 0 ; //开辟新结点 同时使p1 p2指向该结点 p1=p2=(Student *)malloc(sizeof(Student)); scanf("%d %f",&p1->num,&p1->score); //此时head的指向为NULL head = NULL; while(p1->num != 0){ //n代表结点数 n=n+1; if(n==1){ //n=1 说明该结点是第一个结点 使head指向该结点 head = p1; }else{ //如果不是头结点 把p1所指向的结点链接在p2所指向结点的后面 p2->next = p1; } //使p2向前移 p2 = p1; //开辟新结点 使p1指向它 p1 = (Student *)malloc(sizeof(Student)); scanf("%d %f",&p1->num,&p1->score); } //循环退出之后 使p2指向NULL 因为链表的尾结点指向NULL p2->next = NULL; return head; } void main(){ Student *pt; pt = create(); printf("\nnum:%d\nscore:%5.1f\n",pt->num,pt->score ); return 0; }
思路是让p1指向新开辟的结点,p2指向链表中最后一个结点,让p1指向的结点链接在p2所指向结点的后面,用p2->next = p1实现。
相关文章推荐
- C语言单向动态链表程序,实现链表的建立,合并,重新排序,链表元素的插入与删除,以及根据元素成员的值进行元素删除。
- c语言:写一个函数建立一个有3名学生数据的单向动态链表
- C语言:动态链表的建立,查找,删除,插入功能的实现
- c语言:写一个函数建立一个有3名学生数据的单向动态链表
- [转载]C语言链表的建立、插入和删除
- c语言链表的建立
- 怎么在类中建立动态链表,再把链表输出.
- C语言建立动态数组
- C语言实现线性结构创建动态链表的学习心得(一)
- 《第十四周任务二》建立专门的链表类处理有关动态链表的操作
- C语言链表操作(新增单向链表的逆序建立)
- C语言建立动态数组
- C语言链表的建立、插入和删除
- C++第十四周【任务2】建立专门的链表类处理有关动态链表的操作
- 《C++第十四周实验报告2-1》---建立专门的链表类处理有关动态链表的操作
- 第17周报告2之动态链表的建立
- c语言-单链表的建立
- C语言建立动态数组
- C语言内存的动态存储管理2-空闲链表
- 第十四周实验--任务2--建立专门的链表类处理有关动态链表的操作(升级版)