数据结构有快速排序``你学到那应该就可以知道了`
我编这个了只不过第一个学号要按顺序输入!
struct student *insert(struct student *ah,struct student *bh)
{
struct student *pa1,*pa2,*pb1,*pb2;
pa1=pa2=ah;
pb1=pb2=bh;
if(ah==NULL)
{
return(bh);
}
else
while(pb1!=NULL)
{
{
while((pb1->num>pa1->num)&&(pa1->next!=NULL))
{
pa2=pa1;pa1=pa1->next;
}
if(pb1->num<pa1->num)
{
if(ah==pa1)ah=pb1;
else
pa2->next=pb1;
pb2=pb1->next;
pb1->next=pa1;
}
else
{
pa1->next=pb1;pb2=pb1->next;pb1->next=NULL;
}
}
pb1=pb2;
pa1=ah;
}
return(ah);
}可以做个程序先把第一个排序(初步设想的!)
楼主您的想法当然没问题啦,但这样编程会被人笑话。
实际上两个有序链合并时,就象按高矮排的两支队伍(男队、
女队)合并一样。可设立2个指针p和q,最初分别指向男1号
和女1号,比较*p,*q的高矮。不失一般性,设*p高,于是让
*p入链,p=p->next。循环之。若出现某女高于男的情况,
则*q入链,q=q->next。继续循环,直到某队列空。此时将
另队剩余的“尾链”挂在总链后部即可。ok?