这和单链表排序是一样的吧.只是这里多用了一个指针域,同时不改变next指针的指向.
/*从链表中拆出节点,插入到一新链表中*/
nodelink paixu(nodelink*head1)
{
nodelink p,pre,s,q,head ;
p=*head1 ;
pre=NULL ;
head=NULL ;
s=head ;
q=NULL ;
while(p!=NULL)
{
pre=p->next ;
/*保留P的原值,以便下一次访问*/
//p->next=NULL;
if(head==NULL)head=p ;
else
{
s=head ;
q=NULL ;
/*没找到,下移*/
while((s!=NULL)&&(p->info<=s->info))
{
q=s ;
s=s->
range ;
}
if(q==NULL)
{
p->
range=head ;
head=p ;
}
else
{
p->
range=s ;
q->
range=p ;
}
}
p=pre ;
}
return(head);
}
/*我只把红色部分由原来的next改成range*/