C语言关于建立动态链表(含详细注释)

关于建立动态链表,首先我们要知道要为新建节点动态申请储存单元,让指针变量指向这个新建节点,然后再将新建节点添加到链表中。在这里插入代码片
#include <stdio.h>
#include <malloc.h>
#define LEN sizeof(struct Link) /预定义利用sizeof得出LEN的长度/
struct Link
{
int num;
float score;
struct Link * next; /创建一个指针变量/
};
int n; /创建全局变量/
int main()
{
struct Link *head,*creat(); /创建头指针和creat()函数为建立链表函数/
void output(struct Link *head); /output()函数为输出链表函数,括号里是头指针作参数/
head=creat(); /头节点指向新建链表/
output(head);
return 0;
}
struct Link *creat()
{
struct Link *head;
struct Link *p,*pr; /创建两个指针变量/
n=0;
p=pr=(struct Link *) malloc(LEN); /为新建节点动态申请储存单元/
printf(“输入学号,成绩(以空格间隔)\n”);
scanf("%d%f",&p->num,&p->score);
head=NULL;
while(p->num!=0) /输入num为0时,循环结束/
{
n+=1;
if(n==1) /当链表为空表时/
{
head=p; /新建节点为头节点/
}
else
{
pr->next=p; /不是空表,新建节点添加到表尾/
}
pr=p;
p=(struct Link *)malloc(LEN); /建立新节点p/
scanf("%d%f",&p->num,&p->score);
}
pr->next=NULL; /pr节点指向p节点/
return (head); /返回链表头指针/
}
void output(struct Link *head)
{
struct Link *s;
s=head; /头指针s指向头节点/
printf("\n共有%d名学生,信息为:\n",n);
if(head!=NULL) /新建链表不为空表时/
{
do
{
printf("%d %6.1f\n",s->num,s->score);
s=s->next; /使s指向下一个节点/
}while(s!=NULL); /最后到表尾时s的值为NULL,循环终止/
}
}
运行图如下:
在这里插入图片描述

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值