【问题标题】:How to sort this linked list in descending order?如何按降序对这个链表进行排序?
【发布时间】:2014-01-22 19:55:35
【问题描述】:

我不知道这是不是基本的,但我只知道如何按升序排序。

 system("cls");
    if (headptr != (struct online*)NULL)
{

    currentptr = headptr;
    for(; currentptr->ptrnext != NULL; currentptr = currentptr->ptrnext)
    {
        for(newptr = currentptr->ptrnext; newptr != (struct online*)NULL; newptr = newptr->ptrnext)
        {
            if(currentptr->score > newptr->score)
            {
                int temp = currentptr->score;
                currentptr->score = newptr->score;
                newptr->score = temp;
            }
        }
    }

}

【问题讨论】:

标签: c sorting linked-list


【解决方案1】:

是的,这很容易。只需将运算符从“>”更改为“

我没有测试代码,但如果你原来的 sn-p 工作正常,那么你只需要这样做:

system("cls");
    if (headptr != (struct online*)NULL)
{

    currentptr = headptr;
    for(; currentptr->ptrnext != NULL; currentptr = currentptr->ptrnext)
    {
        for(newptr = currentptr->ptrnext; newptr != (struct online*)NULL; newptr = newptr->ptrnext)
        {
            if(currentptr->score < newptr->score)
            {
                int temp = currentptr->score;
                currentptr->score = newptr->score;
                newptr->score = temp;
            }
        }
    }    
}

在这里您可以观看不同排序算法的可视化动画,这可以帮助您更深入地了解冒泡排序的工作原理:

Sorting Algorithms - Visualized

【讨论】:

  • 谢谢!哈哈,没想到这么简单!
  • 没问题。也许您应该花一些时间更清楚地了解您的代码在做什么。尝试逐步调试,看看它实际上是如何工作的。请不要忘记接受帮助您解决问题的答案并投票。谢谢!
  • 完成!我必须承认我在编码方面不是那么好,而且我还在学习过程中。再次感谢! :)
【解决方案2】:

改变

if(currentptr->score > newptr->score)

对它的补充操作

if(currentptr->score <= newptr->score)

这将颠倒顺序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2013-01-03
    • 2021-07-26
    • 1970-01-01
    • 2018-05-03
    • 2015-10-19
    相关资源
    最近更新 更多