用C++用原链表合并链表
时间: 2024-09-22 18:06:51 浏览: 42
在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) {
// 如果l1为空,则返回l2
if (!l1) return l2;
// 如果l2为空,则返回l1
if (!l2) return l1;
// 比较当前节点的值,选择较小的作为新链表的节点
if (l1->val < l2->val) {
l1->next = mergeTwoLists(l1->next, l2);
return l1;
} else {
l2->next = mergeTwoLists(l1, l2->next);
return l2;
}
}
int main() {
// 创建两个示例链表
ListNode* l1 = new ListNode(1);
l1->next = new ListNode(2);
l1->next->next = new ListNode(4);
ListNode* l2 = new ListNode(1);
l2->next = new ListNode(3);
l2->next->next = new ListNode(4);
// 合并两个链表
ListNode* mergedList = mergeTwoLists(l1, l2);
// 打印合并后的链表
while (mergedList) {
cout << mergedList->val << " ";
mergedList = mergedList->next;
}
return 0;
}
```
这个程序会打印出:1 1 2 3 4 4。
阅读全文