链表有点难

//链表
#include<stdio.h>
#include<string.h>
#include<malloc.h>
typedef struct Student{
int id;
char name[20];
int score;
struct Student *next;
}Stud,*Stu;
//head是一个带头节点的链表
void insert(Stu head);
void del(Stu head,int id);
void print(Stu head);
int main()
{
Stu s1=(Stu)malloc(sizeof(Stud));//头指针
s1->next=NULL;
s1->id=0;//借用来表示链表的节点个数
for(int i=0;i<3;i++) insert(s1);
print(s1);
printf("请输入要删除的学生学号:");
int id;
scanf("%d",&id);
del(s1,id);
print(s1);
return 0;
}
void insert(Stu head)
{
printf("请输入学号 姓名 成绩:");
Stu q=(Stu)malloc(sizeof(Stud));
scanf("%d %s %d",&q->id,q->name,&q->score);
q->next=head->next;
head->next=q;
head->id++;
}
//head是一个带头节点的链表,id是要删除节点的学号
void del(Stu head,int id)
{
Stu p=head;
while(p->next!=NULL)
{
if (p->id==id)
{
Stu q=head->next;
head->next=p->next;
free(q);
break;
}
else if(p->next->id==id)
{
Stu q=p->next;
p->next=p->next->next;
free(q);
head->id--;
break;
}
p=p->next;
}
}
//输出链表数据
void print(Stu head)
{
Stu p=head;
printf("链表共有%d个节点\n",head->id);
while(p->next!=NULL)
{
printf("学号%d,姓名%s,成绩%d\n",p->next->id,p->next->name,p->next->score);
p=p->next;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值