【案例教程P138】创建一个5结点的链表,每个结点分别存放5个学生的信息,每个学生的信息包括学号、姓名、成绩三项。现要求编写一个程序找出成绩最高和最低者的姓名和成绩。完善下列程序: #include <stdio.h> #include <stdlib.h> struct list { int num; char name[10]; float score; struct list *next; }; //创建链表,不带头节点 struct list *creatlist() { struct list *tail,*p,*head; int i; head=NULL; for(i=0;i<5;i++) { } return head; } int main() { }
时间: 2023-06-27 21:06:08 浏览: 251
#include <stdio.h>
#include <stdlib.h>
struct list {
int num;
char name[10];
float score;
struct list *next;
};
//创建链表,不带头节点
struct list *creatlist() {
struct list *tail,*p,*head;
int i;
head=NULL;
for(i=0;i<5;i++) {
p=(struct list *)malloc(sizeof(struct list)); //分配内存
printf("请输入第%d个学生的信息:\n",i+1);
scanf("%d%s%f",&p->num,p->name,&p->score);
p->next=NULL;
if(head==NULL) {
head=p;
tail=p;
}
else {
tail->next=p;
tail=p;
}
}
return head;
}
int main() {
struct list *p,*max,*min,*head;
float max_score,min_score;
head=creatlist();
p=head;
max=min=p;
max_score=min_score=p->score;
while(p) {
if(p->score>max_score) {
max=p;
max_score=p->score;
}
if(p->score<min_score) {
min=p;
min_score=p->score;
}
p=p->next;
}
printf("成绩最高者:%s,成绩:%f\n",max->name,max->score);
printf("成绩最低者:%s,成绩:%f\n",min->name,min->score);
return 0;
}
阅读全文