代码:
//带头结点单链表的排序操作
#include <stdio.h>
#include <stdlib.h>
#include "demo2015-2.h"
void SortList(LinkedList Head) {
Node *p = Head->link;//将首元节点看做一个有序链表
Node *pre,*s;
s = p->link;
p->link = NULL;
p = s;//p指向第一个待处理的节点
while (p) {//没有待处理的节点则退出循环
s = p->link;//记录下一个待排序的结点
pre = Head;//pre重新指向头结点
if (pre->link->data < p->data) {
pre = pre->link;
}
p->link = pre->link;
pre->link = p;
p = s;//p指向下一个待处理的节点
}
}
int main() {
LinkedList Head = (Node*)malloc(sizeof(Node));//创建头结点
Head->link = NULL;
Create(Head,5);
PrintList(Head);
printf("***********排序后***********");
SortList(Head);
PrintList(Head);
return 0;
}
运行: