我是一个初学者。关于链表的数据部分的排列顺序。比如,学生成绩管理系统。有学生的姓名,学号,英语,数学,语文,平均成绩。如果想按照学生英语成绩从高分到低分的输出,应该如何做呢?!希望高手能给个思路。输出英文成绩的同时,也要输出学生的姓名和其他的信息。
我自己希望的思路是,用冒泡法。但是在比较大小之后,数据如何交换。需要一个辅助的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;
}
}
不好意思,能举个小例子么,我比较初级~~~~谢谢你啊~~~~