C语言,链表求大神解答
1、已知学生信息包括学号和一门课成绩,将N个学生的信息放入一个带有头结点的单链表中,找出成绩最高者并输出。
2、输入一个学生的学号,查找是否有这个学生,如果有,将他的相关信息输出。
star丶玖少爺丿
浏览 1413回答 2
2回答
-
望远
#include <stdio.h>
#include<stdlib.h>
#define N 10
typedef struct data{
long number;
int score;
} Student;
typedef struct node{
Student data;
struct node *next;
}LinkList;
void main()
{
Student students[N];
long n=-1;
//准备数据
for(int i=0;i<N;i++)
{
students[i].number=10000+i;
students[i].score=(i+1)*10;
}
printf("学生信息:\n");
for(i=0;i<N;i++)
{
printf("学号: %ld\t成绩:%d\n",students[i].number,students[i].score);
}
//创建单链表
LinkList *list,*s,*r;
list=(LinkList*)malloc(sizeof(LinkList));
r=list;
for(i=0;i<N;i++)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=students[i];
r->next=s;
r=s;
}
r->next=NULL;
r=list->next;
s=list->next;
while(r!=NULL)
{
if(r->data.score > s->data.score)
{
s=r;
}
r=r->next;
}
printf("最高分为:%d 学号为:%ld\n",s->data.score,s->data.number);
printf("请输入要查询的学生学号:");
scanf("%ld",&n);
r=list->next;
while(r!=NULL)
{
if(r->data.number==n)
{
break;
}
r=r->next;
}
if(r==NULL)
{
printf("不存在该学生\n");
}else{
printf("学号为:%ld的学生成绩为%d\n",r->data.number,r->data.score);
}
}
-
硕树
这个没有设计什么复杂的问题,你到底有什么问题?不是想直接药粉代码吧。。。。
打开App,查看更多内容