一.原理:
根据链表长度,使用冒泡排序对链表进行排序,排序过程只改变节点的数据先后顺序,不改变任何节点位置,原理图如下:
二.获得链表长度的程序
int get_list_length(stu *head)
{
stu *p = head;
int counts = 0;
while (p->next)
{
counts++;
p = p->next;
}
return counts;
}
三. 链表排序的程序:
void list_sort(stu *head)
{
int length = get_list_length(head);
int temp;
stu *p = head->next;
for (int i = 0; i < length; i++)
{
p = head->next;
for (int j = 0; j < length - 1 - i; j++)
{
if (p->data < p->next->data)
{
temp = p->data;
p->data = p->next->data;
p->next->data = temp;
}
p = p->next;
}
}
}