题目:
有一个带头结点的单链表,设计算法使其元素递增有序。
思想:注意断链!!!!
代码展示:
void Sort(LinkList &L)
{
if(L->next==NULL || L->next->next==NULL)
{
return ;
}
LinkList p,pre,q;
p=L->next->next;
L->next->next=NULL;
while(p!=NULL)
{
q=p->next;// q保存P节点的后继结点指针
pre=L;// 从有序单链表开始比较,pre指向插入节点的前驱节点
while(pre->next!=NULL&&pre->next->data<p->data) //在有序单链表中插入p所指节点的前驱节点(pre所指向)
{
pre=pre->next;// 在pre所指节点之后插入P所指节点
}
p->next=pre->next;
pre->next=p;//扫描原单链表余下的节点
p=q;
}
}