关于C语言中,关于链表数据部分排列顺序的问题。

我是一个初学者。关于链表的数据部分的排列顺序。比如,学生成绩管理系统。有学生的姓名,学号,英语,数学,语文,平均成绩。如果想按照学生英语成绩从高分到低分的输出,应该如何做呢?!希望高手能给个思路。输出英文成绩的同时,也要输出学生的姓名和其他的信息。
我自己希望的思路是,用冒泡法。但是在比较大小之后,数据如何交换。需要一个辅助的Temp来帮助交换,但是要把学生的整个数据都交换的话,如何做呢,要一个一个都交换么?!有没有别的,其他的方法呢?!

定义一个结构体,结构体包括学生的姓名,学号,英语,数学,语文,平均成绩,每个结构体作为顺序链表的节点,对链表进行排序,排序算法可以用冒泡排序法,根据节点中的英语成绩进行排序,冒泡排序是要定义一个临时变量的。节点交换即可追问

结点交换的时候,仅仅是数据部分交换么?后面的指针部分也要交换么?具体能给个思路么?希望能详细一点的思路。谢谢高手啊~~~

追答

/定义节点
typedef struct node
{
/*
定义需要的变量
int data;
float a;
double a;
char c;
*/
node *next;
}Node;
typedef Node *List;
/*
使用头插法或者尾插法将节点加入链表
*/
void Sort(List list)
{
List p=list;
List *r=null;//临时变量
For(int i=0;idata>p->next->data)
{
r=p->next;
p->next=p->next->next;
r-next=p;
}
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-20
试试用对应类型的指针数组实现!!
输出时就通过引用数组元素里的数据输出!!
应该可以!!追问

不好意思,能举个小例子么,我比较初级~~~~谢谢你啊~~~~

相似回答