为了账号安全,请及时绑定邮箱和手机立即绑定

C语言,链表求大神解答

C语言,链表求大神解答

C
star丶玖少爺丿 2016-12-23 20:14:45
1、已知学生信息包括学号和一门课成绩,将N个学生的信息放入一个带有头结点的单链表中,找出成绩最高者并输出。 2、输入一个学生的学号,查找是否有这个学生,如果有,将他的相关信息输出。
查看完整描述

2 回答

已采纳
?
望远

TA贡献1017条经验 获得超1032个赞

#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);
	}
	
}

//img1.sycdn.imooc.com//585d2824000165ec04110262.jpg

查看完整回答
4 反对 回复 2016-12-23
?
硕树

TA贡献14条经验 获得超6个赞

这个没有设计什么复杂的问题,你到底有什么问题?不是想直接药粉代码吧。。。。

查看完整回答
2 反对 回复 2016-12-24
  • 2 回答
  • 8 关注
  • 1412 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信