请写一个c++方法,使两链表合并为一个链表且不丢失原来的数据
时间: 2024-11-22 16:44:33 浏览: 3
C++版本将两个有序链表合并为一个新的有序链表并返回原理及代码实现
在C++中,我们可以创建一个方法来合并两个已排序的单链表,这里我会展示如何合并它们并保持原有的顺序。首先,我们需要定义一个节点结构体`ListNode`:
```cpp
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
```
接下来是一个合并两个链表的函数实现:
```cpp
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
// 创建一个新的头节点
ListNode* dummy = new ListNode(0);
ListNode* tail = dummy;
// 遍历两个链表
while (l1 && l2) {
// 将较小值的节点添加到新链表
if (l1->val < l2->val) {
tail->next = l1;
l1 = l1->next;
} else {
tail->next = l2;
l2 = l2->next;
}
// 移动tail指针到新添加的节点
tail = tail->next;
}
// 如果其中一个链表未遍历完,则将剩余部分追加到新链表尾部
if (l1) {
tail->next = l1;
} else if (l2) {
tail->next = l2;
}
return dummy->next; // 返回合并后的链表头部
}
```
在这个函数中,我们创建了一个虚拟头节点`dummy`来简化合并过程,然后通过比较两个链表当前节点的值,选择较小的节点并将其添加到新链表中。最后返回新链表的头部。
阅读全文