c语言求助:怎么根据链表中的某个数据对链表进行排序?

来源:百度知道 编辑:UC知道 时间:2024/05/11 00:53:01
比如一个由结构体
struct student
{
char num[10];
float score;
};
组成的链表;怎么根据其中的score值进行排序?
其中链表已经构成,struct student *head已经指向链表的头地址。

#include <stdio.h>

/*
* nodeEntry : 节点数据类型
* nodeADT : 节点结构
* linkADT : 链表结构
*/

typedef int nodeEntry;

typedef struct nodeCDT {
nodeEntry entry;
struct nodeCDT *next;
}*nodeADT;

typedef struct linkCDT {
nodeADT head;
}*linkADT;

/*
* InitLink : 初始化链表
* CreateNode : 创建节点
* AppendLink : 添加数据
*/

void InitLink(linkADT *link) {
*link=(linkADT)malloc(sizeof*(*link));
(*link)->head=0;
}

nodeADT CreateNode(nodeEntry entry) {
nodeADT p=(nodeADT)malloc(sizeof*p);
p->entry=entry,p->next=0;
return p;
}

void AppendLink(linkADT *link,nodeEntry entry) {
nodeADT newNode=CreateNode(entry),p;
if (!*link) InitLink(link);
if (!(*link)->head) (*link)->head=newNode;
else {
for (p=(*link)->head;p->next;p=p->