算法实现:
//对链表进行排序
void Sort(LinkList& L)
{
LNode* p = L->next->next; //p用于遍历原链表中第二个结点往后的那些结点
L->next->next = NULL; //建立一个只有一个结点的有序链表
LNode* pre, * temp, * q;
while (p != NULL)
{
temp = p->next; //用于取得链表p的下一个节点
//找到p结点在L链表中的位置,将其插入该位置
for (pre = L, q = L->next; q != NULL; pre = q, q = q->next)
{
if (q->data > p->data)
break;
}
p->next = pre->next;
pre->next = p;
p = temp;
}
}
算法效果: