写出将两个有序链表合并的C++代码
时间: 2023-09-02 22:09:47 浏览: 47
好的,以下是将两个有序链表合并的C++代码,使用了递归的方法:
```c++
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1 == NULL) return l2;
if(l2 == NULL) return l1;
ListNode* res = NULL;
if(l1->val <= l2->val) {
res = l1;
res->next = mergeTwoLists(l1->next, l2);
} else {
res = l2;
res->next = mergeTwoLists(l1, l2->next);
}
return res;
}
};
```
其中,`ListNode` 是链表节点的定义。我们首先判断两个链表是否为空,如果有一个为空,直接返回另一个链表即可。如果两个链表都不为空,则比较两个链表头节点的值,将较小的节点作为结果链表的头节点,并递归地将其余节点合并到结果链表中。最后返回结果链表的头节点即可。
相关问题
JAVA 将两个有序链表合并为一个有序链表
JAVA可以通过以下步骤将两个有序链表合并为一个有序链表:
1. 创建一个新的链表头节点`newNode`和指针`tmp`,用来构建合并后的有序链表。
2. 设置两个链表的头结点分别为`head1`和`head2`。
3. 比较`head1`和`head2`节点的值,将较小的节点连接到`tmp`节点的后面,然后将指针`tmp`指向新加入的节点。
4. 移动被选中的节点所在的链表的头指针,即将`head1`或`head2`指向下一个节点。
5. 重复步骤3和步骤4,直到其中一个链表走完。
6. 当其中一个链表走完后,将另一个链表剩下的节点直接连接到`tmp`节点的后面,使其`tmp.next = head1/head2`。
7. 返回新的链表头节点`newNode.next`即为合并后的有序链表。
通过以上步骤,JAVA可以将两个有序链表合并为一个有序链表。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [合并两个有序链表(java)](https://blog.csdn.net/intmainreturn/article/details/128490890)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [合并两个有序链表(Java)](https://blog.csdn.net/m0_63036262/article/details/124417509)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
两个有序链表的合并代码
以下是两个有序链表合并的代码:
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
if (l1 == NULL) return l2;
if (l2 == NULL) return l1;
if (l1->val < l2->val) {
l1->next = mergeTwoLists(l1->next, l2);
return l1;
} else {
l2->next = mergeTwoLists(l1, l2->next);
return l2;
}
}
这段代码使用递归的方式将两个有序链表合并成一个有序链表。