单链表
这个算法看了半天没看明白机制,谁能解释一下具体实现过程例如数据:L,8,7,9,3,5,4,2
L为头结点,只有指针域,没有数据域
void Sort(LinkList &L){
//本算法实现将单链表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; //在有序表中查找插入的前驱结点*pre
p->next=pre->next; //将*p 插入到*pre 之后
pre->next=p;
p=r; //扫描原单链表中剩下的结点
}
}