带头节点单链表的建立 (C语言完整版)

本文介绍了一个使用C语言创建链表并输出其内容的简单程序。该程序定义了一个链表节点结构,并通过动态内存分配创建链表,随后输出链表中的所有学生姓名和分数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
#include <malloc.h>
#define N 5
typedef struct node
{
char name[20];
float score;
struct node *next;
}stud;


stud *creat(int n)
{
stud *p, *h, *s;
int i;
if((h=(stud*)malloc(sizeof(stud)))==NULL)
{
printf("No memory space can be allocated!");
exit(0);
}
h->name[0]='\0';
h->score=0;
h->next=NULL;
p=h;
for(i=0;i<n;i++)
{
if((s=(stud*)malloc(sizeof(stud)))==NULL)
{
printf("No memory space can be allocated!");
exit(0);
}
p->next=s;
printf("Enter the %d name and score ",i+1);
scanf("%s%f",s->name,&s->score);
s->next=NULL;
p=s;
}
return(h);
}


void print(stud *h)//输出链表
{
int n;
stud *p;
printf("\n Now, These %d records are:\n",N);
p=h->next ; //如果选择p=h,则头结点中的数据域中会出现乱码
if(h !=NULL)
do
{
printf("%s %f\n",p->name,p->score);
p=p->next;
}while(p!=NULL);
}






main()
{
int number;
stud *head;
number=N;
head=creat(number);
print(head);
}

转自——http://www.360doc.com/content/12/1214/13/8363527_253983319.shtml

本人稍做修改

? 头结点的数据域 如果是三个 或更多 出现乱码 怎么处理

答只要让 输出函数中的p=h 改为 p=h->next;  就可以了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值