已知有一个含有5个元素的结构体数组,用于存放学生的数学成绩,每个元素中含有学生姓名,学号和成绩。
设计一个链表,将学生成绩由高到低排列,并输出排序后的学生信息。
#include<stdio.h>
struct stunode
{
char *name; /*数据域*/
char *studentno;
float score;
struct stunode *next; //引用域
}stuarray[5]={
{"xiang yong","200901030001",95.5},
{"liu qiang","200901030002",92},
{"li cheng","200901030003",88},
{"meng qingtao","200901030004",89},
{"lin hui","200901030005",91.5}
}; //数据域赋值
int outputlistinfo(struct stunode *listheader) //链表函数输出信息
{
int i=0;
struct stunode *listnode=NULL;
listnode=listheader;
printf("\t开始处理函数outputlistinfo()\n");
printf("\t姓名\t\t学号\t\t成绩\n");
for(i=0;i<5;i++)
{
printf("\t%s \t%s %f\n",listnode->name,listnode->studentno,listnode->score);
if(listnode->next!=NULL) //判断链表是否结束
{ //若链表结束,则退出循环
listnode=listnode->next;
}
else
{
break;
}
}
}
int main()
{
struct stunode *header=NULL; //设置表头结点
header =&stuarray[0]; //构建链表
stuarray[0].next=&stuarray[1];
stuarray[1].next=&stuarray[4];
stuarray[4].next=&stuarray[3];
stuarray[3].next=&stuarray[2];
stuarray[2].next=NULL; //设置表尾节点引用域
outputlistinfo(header); //调用链表遍历函数
}