struct person *sort(struct person *head)
/*选择法排序。bfp1为p1前一地址,bfmin为min前一地址。*/
{
struct person *p1=NULL,*p2=NULL,*bfp1=NULL,*min=NULL,*bfmin=NULL;
p1=head;
while(p1->next)/*判断链尾*/
{
min=p2=p1;
while(p2->next)/*判断链尾*/
{
if(strcmp(min->name,p2->next->name)>0)
{
bfmin=p2;
min=p2->next;
}
p2=p2->next;/*下移*/
}
if(min!=p1)/*成立则修改链表*/
{
bfmin->next=min->next;/*删除节点*/
min->next=p1;/*插入节点*/
if(p1==head) head=min;
else bfp1->next=min;
bfp1=min;
}
else
{
bfp1=p1;
p1=p1->next;/*下移*/
}
}
return(head);
}
本文介绍了一种使用选择排序算法对链表进行排序的方法。通过遍历链表找到最小元素并将其移动到正确的位置来实现排序过程。具体步骤包括初始化指针、比较节点以及交换元素等。
5万+

被折叠的 条评论
为什么被折叠?



