基于链表的两个递增有序序列的合并c++
时间: 2024-10-29 14:17:32 浏览: 33
在C++中,如果你有两个基于链表的递增有序序列需要合并,可以使用迭代或递归的方式来实现。这里我将提供一个迭代的解决方案:
```cpp
#include <iostream>
using namespace std;
// 定义链表节点结构
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
// 如果其中一个链表为空,直接返回另一个链表
if (!l1) return l2;
if (!l2) return l1;
// 创建一个新的头节点,并设置指针
ListNode* head = new ListNode(0);
ListNode* current = head;
// 比较并合并两个链表
while (l1 && l2) {
if (l1->val <= l2->val) {
current->next = l1;
l1 = l1->next;
} else {
current->next = l2;
l2 = l2->next;
}
current = current->next;
}
// 将剩余的部分添加到新链表的尾部
if (l1) current->next = l1;
else current->next = l2;
return head->next; // 返回合并后的链表头节点
}
int main() {
// 示例:假设你有两链表 [1, 2] 和 [2, 3, 4]
ListNode* list1 = new ListNode(1);
list1->next = new ListNode(2);
ListNode* list2 = new ListNode(2);
list2->next = new ListNode(3);
list2->next->next = new ListNode(4);
ListNode* result = mergeTwoLists(list1, list2);
// 打印结果
while (result) {
cout << result->val << " ";
result = result->next;
}
return 0;
}
```
阅读全文