用c++实现有序表的合并,已知有序顺序表L1和L2(从小到大),合并为新的有序顺序表L3(从小 到大) void mergeList( SqList L1, SqList L2, SqList &L3);
时间: 2024-10-25 07:14:35 浏览: 24
在C++中,我们可以使用迭代的方式来合并两个有序链表`L1`和`L2`,创建一个新的有序链表`L3`。下面是一个简单的函数实现:
```cpp
#include <iostream>
// 链表节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 合并链表函数
void mergeList(ListNode*& L1, ListNode*& L2, ListNode*& L3) {
// 创建一个临时头结点
ListNode* dummy = new ListNode(0);
ListNode* tail = dummy;
// 指针分别指向两个链表的头部
ListNode* p1 = L1;
ListNode* p2 = L2;
while (p1 && p2) {
// 如果L1的元素较小,则将其添加到结果链表中,并移动指针
if (p1->val < p2->val) {
tail->next = p1;
p1 = p1->next;
} else {
tail->next = p2;
p2 = p2->next;
}
// 更新tail
tail = tail->next;
}
// 将剩余的链表连接到结果链表末尾
if (p1) {
tail->next = p1;
} else {
tail->next = p2;
}
// 结果链表的头结点就是合并后的链表
L3 = dummy->next;
}
```
阅读全文