c - 对链表中的元素进行排序

标签 c

我想按升序对链表中的元素进行排序。 我编写了以下代码:

void don(struct node *head)
{
struct node *god,*tmp=head,*current,*bak;
for(god=head;god->next!=NULL;god=god->next)
{
    current=god->next;
    for(bak->next=tmp;(bak->next)!=(god->next);bak=bak->next)
    {
        if((current->data)<(bak->next->data))
        {
            god->next=current->next;
            current->next=god;
            bak->next=current;
        }
    }
}
}

但它会导致无限循环。
请帮助纠正代码:)!
我希望它这样做

5-2-3-1-4
2-5-3-1-4
2-3-5-1-4
1-2-3-5-4
1-2-3-4-5

最佳答案

本声明

 god->next=current->next;

打破第一个for()循环:

 for(god=head;god->next!=NULL;god=god->next)

关于c - 对链表中的元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36467142/

相关文章:

由 C++ 编写

c - 在带有数学库的 Windows 上的 Ubuntu Bash 上出现 gcc 问题

c - 在随机条件下的无限 while 循环中创建读取器和写入器线程时出现段错误

c - 如何使用批处理文件打开文件,作为批处理文件的输入

c - 关于数据结构的好而广泛的书(教程)

c++ - 在 MFC 中添加加速器(快捷方式) - 如何?

c - 无法编译 io_uring

c - 程序执行时停止(文件处理)

c - [-1,1]、[-2,2]等范围内均匀分布的数

c - 为什么我的 Thrift (c_glib) 客户端失败并出现 "invalid pointer"错误?