伙计们,我试图以排序顺序合并两个排序的单链接列表。在SO中,我找到了一种递归方法来实现这一点。我努力去理解代码,但不能完全理解!有人在吗,谁能帮我弄清楚。提前感谢!
下面是代码片段:
Node MergeLists(Node list1, Node list2) {
if (list1 == null) return list2;
if (list2 == null) return list1;
if (list1.data < list2.data) {
list1.next = MergeLists(list1.next, list2);
return list1;
} else {
list2.next = MergeLists(list2.next, list1);
return list2;
}
}
链接:访谈:合并两个排序的单链表
对不起,浪费你的时间!:(
1. Node MergeLists(Node list1, Node list2) {
2. if (list1 == null) return list2;
3. if (list2 == null) return list1;
4. if (list1.data < list2.data) {
5. list1.next = MergeLists(list1.next, list2);
6. return list1;
7. } else {
8. list2.next = MergeLists(list2.next, list1);
9. return list2;
10. }
11. }
最初,两个链表(LL1和LL2)中的每一个都将(单独)排序。代码只合并它们。用一个简单的例子说明
例如,LL1<代码>1-
LL2:6-
因为
list1。数据
当然,对于更复杂的示例,将有更多的递归。
这是我可以添加到代码中的内容:
Node MergeLists(Node list1, Node list2) {
if (list1 == null) return list2; //Exit strategy
if (list2 == null) return list1; //Exit strategy
if (list1.data < list2.data) { //If current item in list1 is less than current
//item in list2 we put the item of list1 in our
//sorted list and continue the algorithm recursivly
//and add the node from recursive function to list1.next
list1.next = MergeLists(list1.next, list2);
return list1;
} else { //exactly like above but this time we continue with list2
list2.next = MergeLists(list2.next, list1);
return list2;
}
}
NowCoder 题目描述 解题思路 递归 // java public ListNode Merge(ListNode list1, ListNode list2) { if (list1 == null) return list2; if (list2 == null) return list1; if (list1.val <= lis
假设列表“A”是1- 请回顾一下这个,帮我即兴创作
一、题目 输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。 二、解题思路 Step1.定义一个指向新链表的指针,暂且让它指向NULL; Step2.比较两个链表的头结点,让较小的头结点作为新链表的头结点; Step3.有两种方法。 ①递归比较两个链表的其余节点,让较小的节点作为上一个新节点的后一个节点; ②循环比较两个链表的其余节点,让较小的节点作为上一个新节点的后一
本文向大家介绍python实现合并两个排序的链表,包括了python实现合并两个排序的链表的使用技巧和注意事项,需要的朋友参考一下 剑指offer:合并两个排序的链表,Python实现 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 吐槽 本来想用递归实现,但是大脑卡壳,没有想到合适的递归策略,潜意识里还是把两个链表当成两个数组来看待,写出了
我在C语言课程考试前练习一些算法问题,我被这个问题卡住了(至少3个小时甚至4个小时),我不知道如何回答: 您有两个已排序的循环单链接列表,必须合并它们并返回新循环链接列表的标题,而不创建任何新的额外节点。返回的列表也应该进行排序。 节点结构为: 我尝试了很多方法(递归和非递归),但都没有解决问题。 谢谢你的帮助。
本文向大家介绍手写代码:合并两个排序数组相关面试题,主要包含被问及手写代码:合并两个排序数组时的应答技巧和注意事项,需要的朋友参考一下 参考回答: