一个关于c语言数据结构的问题 急等!!!!!!!!!!!!
1.建立一个有4个结点的单链表(无头结点),包含以下内容:Tom79Mike80Andy91Angelia23用户更新Tom的成绩为29,显示成绩更新后的整个单链表。...
1. 建立一个有4个结点的单链表(无头结点),包含以下内容:
Tom 79
Mike 80
Andy 91
Angelia 23
用户更新Tom的成绩为29,显示成绩更新后的整个单链表。 展开
Tom 79
Mike 80
Andy 91
Angelia 23
用户更新Tom的成绩为29,显示成绩更新后的整个单链表。 展开
1个回答
展开全部
下面的程序先输入4个结点,分别输入姓名与成绩。然后再输入需要更新的名字,也就是Tom,再输入更新的成绩,也就是29。更新完成后显示整个单链表。我跑过这个程序了,没有错误的。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct list
{
char name[10];
int grade;
struct list *next;
};
int main()
{
struct list * head;
struct list * p;
struct list * pNew;
int sign;
char update_name[10];
int update_grade;
sign=0;
p=(struct list *)malloc(sizeof(struct list));
head=p;
printf("please input the name:\n");
scanf("%s",p->name);
printf("please input the grade:\n");
scanf("%d",&p->grade);
for(sign=0;sign<3;sign++)
{
pNew=(struct list *)malloc(sizeof(struct list));
printf("please input the name:\n");
scanf("%s",pNew->name);
printf("please input the grade:\n");
scanf("%d",&pNew->grade);
p->next=pNew;
p=pNew;
}
pNew->next=NULL;
p=head;
printf("before change,the list is:\n");
for(p;p!=NULL;p=p->next)
{
printf("the name is %s\n",p->name);
printf("the grade is %d\n",p->grade);
printf("\n");
}
p=head;
printf("please input the name you want to update the grade:\n");
scanf("%s",update_name);
printf("please input the grade you want to update:\n");
scanf("%d",&update_grade);
for(p;p!=NULL;p=p->next)
{
if(strcmp(p->name,update_name)==0)
{
p->grade=update_grade;
break;
}
}
p=head;
printf("after change,the list is:\n");
for(p;p!=NULL;p=p->next)
{
printf("the name is %s\n",p->name);
printf("the grade is %d\n",p->grade);
printf("\n");
}
return 0;
}
运行结果如下,你也可以自己跑一下。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询