早上起来想到一种思路,把单链表H的第一个元素结点单独提取出来定义为temp,定义一个尾指针R从H链表中第二个元素开始遍历,直到空为指,单链表LA使用尾插法存放小于第一个结点元素的值,单链表LB使用头插法存放大于第一个结点元素的值。
然后将LA,temp,LB连接起来,释放不要的内存空间即可。
LinkList think(LinkList L){
LinkList temp,R,RA,p;
temp=L->next;
R=L->next->next;
//新建两条链表
LinkList LA,LB;
LA =(Node *)malloc(sizeof(Node));
RA=LA;
LB = (Node *)malloc(sizeof(Node));
LB->next=NULL;
while(R){
if(R->data>temp->data){
//采用头插法
p=R->next;
R->next=LB->next;
LB->next=R;
R=p;
}else
{
//采用尾插法
RA->next=R;
RA=R;
R=R->next;
}
}
RA->next=temp;
temp->next=LB->next;
free(LB);
free(L);
return LA;
}