题目描述:
让一个带头结点的单链表其内的元素都递增有序。
算法思想:
先构成只有一个数据结点的有序单链表,然后依次扫描单链表剩下的元素结点,在有序表中通过比较将结点在合适的地方插入。
代码如下:
void Sort(LinkList &L){
LNode *p=L->next,*pre;
LNode *r=p->next; //r保持*p后继结点指针,以保证不断链
p->next=NULL;
p=r;
while(p!=NULL){
r=p->next; //保护*p的后继的结点指针
pre=L;
while(pre-next!=NULL && pre->next->data < p->data)
pre=pre->next; //在有序表中查找插入*p的前驱结点*pre
p->next=pre->next;
pre->next=p;
p=r;
}
}