【发布时间】:2014-10-17 21:19:12
【问题描述】:
我正在寻找一种用于合并两个已排序的链接链的模板。我对 Java 还很陌生,这似乎是一项非常具有挑战性的任务,要以我所拥有的有限知识来完成。我了解如何对数组进行合并排序,但是当涉及到链表时,我似乎在画空白。你们都可以给我的任何帮助,无论是实际代码还是只是建议从哪里开始,将不胜感激。
感谢您的宝贵时间!
【问题讨论】:
标签: linked-list mergesort
我正在寻找一种用于合并两个已排序的链接链的模板。我对 Java 还很陌生,这似乎是一项非常具有挑战性的任务,要以我所拥有的有限知识来完成。我了解如何对数组进行合并排序,但是当涉及到链表时,我似乎在画空白。你们都可以给我的任何帮助,无论是实际代码还是只是建议从哪里开始,将不胜感激。
感谢您的宝贵时间!
【问题讨论】:
标签: linked-list mergesort
如果这两个链表已经排序,那么将这两个链表合并起来就很容易了。我会告诉你算法,但你需要自己编写代码,因为它看起来像是一个学校项目。首先你创建一个新的链表,然后将新链表的头部指定为 list1Head 和 list2Head 的最小值,然后你只需遍历两个链表,每次选择两个链表的当前节点的最小值并附加到新创建的列表,如果它被选中,则将当前设置为 .Next。如果其中一个列表没有更多节点,则将另一个列表的其余部分直接附加到新列表中。完成
【讨论】:
您不能查看每个列表中的第一个元素并取最小的元素吗?这是新列表的开始。从它来自的列表的前面删除它。现在再次查看第一个元素并取最小的元素,使其成为新列表中的第二个元素。然后只需重复此过程,将两个列表压缩在一起。
如果您想避免创建新列表,只需找到最小的,然后查看指向的东西和另一个列表的开头,看看哪个更小。如果您还没有指向较小的指针,请更新指针。然后冲洗并重复。
【讨论】: