有一个带头结点的单链表L,设计一个算法使其元素递增有序
算法思想:采用直接插入排序算法的思想,先构成一个只含一个数据节点的有序链表,然后依次扫描单链表中剩下的节点*p(知道p==NULL为止),在有序链表中通过查找插入*p的掐前驱节点*prev,然后将*p插入到*prev之后。
代码
void sort(LinkList &L){
LNode*p=L->next,*pre;
LNode*r=p->next;
p->next=NULL;
p=r;
while(p!=NULL){
r=p->next;
pre=L;
while(pre->next!=NULL&&pre->next->data<p->data){
pre=pre->next;
}
p->next=pre->next;
pre->next=p;
p=r;
}
}