【问题标题】:C++ Sorting Algorithm Code for Singly Linked List [duplicate]单链表的 C++ 排序算法代码 [重复]
【发布时间】:2012-01-29 11:17:19
【问题描述】:

可能重复:
Sort a single linked list

在插入节点并完成后,排序算法代码将是什么?我尝试过冒泡排序,但我无法实现..

    struct WordCounter {
        char *word;
        int word_count;
        struct WordCounter *pNext;  /* pointer to the next word counter in the list */
    };

【问题讨论】:

  • 这取决于您选择的排序算法。你试过什么?
  • @Don 代码示例和 Haskell 中的推理可能对 OP 没有帮助。

标签: c++ list sorting linked-list


【解决方案1】:

这取决于很多事情。我假设您有一项任务需要您自己实现排序。

  1. 链表的大小。插入排序适用于中等大小的链表。否则,快速排序应该可以解决问题。
  2. 我假设您正在排序的“word_count”的分布。
  3. 您的任务的要求。标准排序,即 std::sort 是否可以接受?

对于我在字里行间阅读的问题,std::map 对> 将是 C++ 的解决方法。

如果这是一个学校项目,很可能是插入排序,而您还没有介绍快速排序。

对您的问题最相关的回答是“您尝试过什么?”,这不是一件容易的事。你既有链表的概念,也有排序的概念来整理和掌握。

【讨论】:

    【解决方案2】:

    当标准库有std::list 模板类时,为什么要使用自定义链表?将您的 struct 替换为

    struct WordCounter {
        std::string word;
        unsigned word_count;
    };
    

    将这些粘贴在std::list<WordCounter> 中并使用其sort 成员函数。

    【讨论】:

    • 我不熟悉 std::list 类。即使我更改了结构,我也不知道如何更改填充列表的其余代码:S
    • @user1119900 std::list 的文档在这里 stdcxx.apache.org/doc/stdlibref/list.html 。它甚至带有一个你可以使用的 sort() 例程。
    猜你喜欢
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 2012-02-17
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多