单链表排序,希望牛人给看看啊,怎么不能得出正确结果啊
struct shares *sort(struct shares **h) /* 选择排序算法 */{
struct shares *p,*q,*r,*s;
p=q=(struct shares *)malloc(LEN);
p=*h;
while(p->next)
{
r=p;
q=p->next;
for(;q->next;q=q->next)
{
if(q->next->num>q->num) r=q;
if(p!=r)
{
s=r;
r=p;
p=s;
}
}
p=p->next;
}
p->next=NULL;
return(p);
}