//功能:有序排列链表
//参数:链表首地址
//返回值:1,succed; 0,failed
int sort_linklist(Linknode *H)
{
Linknode *P = NULL, *Q = NULL, *T = NULL;
Datatype tmp = 0;
//判断链表是否为空
if (is_empty_linklist(H)) //需要另外实现
{
printf("linklist is empty!\n");
return 0;
}
P = H->next;
//简单选择排序
//把链表看作数组,下标是节点指针。更新方式是P =P->next。
//排列的是节点中的元素。
while (NULL != P->next) //最后一个节点不用比较
{
T = P; //每次从这一轮的第一个节点开始比较
Q = P->next;
//找到这一轮的最小数值
while (NULL != Q)
{
if (T->data > Q->data)
{
T = Q;
}
Q = Q->next;
}
//如果最小值不是第一个节点,交换
if ( T != P )
{
tmp = P->data;
P->data = T->data;
T->data = tmp;
}
P = P->next;
}
return 1;
}
单向链表-简单选择排序
最新推荐文章于 2023-02-20 09:29:31 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)