*用选择法排序*/
link sort(link head)
{
link beforep,p,p1,k,beforek,temp;
if(head==NULL)printf("信息系统为空!!!按任意键回到主菜单!\n");
else
{p=head;
while(p->next!=NULL)
{
k=p;
p1=p->next;
while(p1!=NULL)
{
if(k->aver<p1->aver)k=p1;
p1=p1->next;
}
if(k!=p)
{
beforek=head;
while(beforek->next!=k)beforek=beforek->next;
if(p==head)head=k;
else beforep->next=k;
beforek->next=p;
temp=k->next;
k->next=p->next;
p->next=temp;
p=k;
}
beforep=p;
p=p->next;
}
printf("排序成功,按任意键回到主菜单!\n");
}
return(head);
}
这段代码能给我注释下吗? 说得越明白越好~
看得有点懂了吧,那个排序应该是按最大的在前面吧~其他的倒是没什么问题了
追答应该是最小的在最前面
能再详细点吗?我加分了。
追答给个建议,你可以用debug调试看一遍,就会更明白了。
哪里还有不明白?
整个算法就是:
1. 遍历链表,找出最大值;
2. 把当前最大值依次放到链表的前面【头】;
3. 循环上面两个步骤,直到链表最后。