c++ - 允许在单链表 C++ 的合并排序中重复

标签 c++ duplicates mergesort singly-linked-list

我现在对此非常恼火。我正在为大学学习合并排序,并且正在学习这个 merge sort我在网上找到的。但是,我似乎没有得到重复项,我想要重复项。它的这一点如下,但我已经评论了这一点和东西,它使排序无法正常工作。有什么办法可以保留拷贝吗?如果您能保持简单的答案,我将不胜感激。谢谢

else
{
    // Both are equal.
    // Arbitraritly chose to add one of them and make
    // sure you skip both!


    if(c == NULL)
    {
        c = a;
    }
    else
    {
        c->next = a;
        c = c->next;
    }

    a = a->next;
    b = b->next;
}

最佳答案

我认为线索在代码的注释中:“确保跳过这两个”。通过递增两个 列表指针,您向输出添加了一个元素,但跳过了两个 输入元素。所以只增加一个指针。然后,另一个元素将被移动到下一次迭代的输出列表中。

关于c++ - 允许在单链表 C++ 的合并排序中重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5851732/

相关文章:

r - 基于两列的重复子集

algorithm - 如何对不同文件中的多个 GB 数据进行排序?

c - 使用 malloc 对 double 动态数组进行合并排序,内存问题

arrays - 给定两个数组,每个数组包含 n 个已排序元素,是否有 O(log n) 时间算法来查找所有 2n 个元素的中位数?

c++ - 类似于 glib 的对象模型?

c++ - 在这种情况下如何修复 "Reference to non-static member function must be called"?

c++ - 可能违反严格的别名?

c++ - 调整大小时如何排列QGridLayout中的项目?

javascript - 如何防止数组中元素连续重复?

python - 如何使用 Python pandas “group by” 多个变量,消除重复项