用c++实现有序表的合并,已知有序顺序表L1和L2(从小到大),合并为新的有序顺序表L3(从小 到大) void mergeList( SqList L1, SqList L2, SqList &L3);
时间: 2024-10-25 10:14:39 浏览: 21
在C++中,合并两个已排序的顺序表(列表)可以使用迭代的方式比较元素并逐个添加到新表L3。这里是一个简单的示例函数`mergeList`的实现:
```cpp
#include <iostream>
using namespace std;
// 假设SqList是一个结构体,包含数据节点和指向下一个节点的指针
struct SqNode {
int data;
SqNode* next;
};
void mergeList(SqList L1, SqList L2, SqList& L3) {
// 初始化L3为空
L3 = nullptr; // 或者使用一个空头结点
// 定义两个指针,分别指向L1和L2的头部
SqNode* p1 = L1->next;
SqNode* p2 = L2->next;
// 当其中一个列表还有剩余元素
while (p1 != nullptr && p2 != nullptr) {
// 比较当前节点的数据
if (p1->data <= p2->data) {
// 将较小节点添加到L3,并移动指针到下一个节点
if (L3 == nullptr) { // 如果L3为空,直接连接
L3 = L1;
} else {
L3->next = p1;
}
L3 = p1;
p1 = p1->next;
} else {
L3->next = p2;
L3 = p2;
p2 = p2->next;
}
}
// 如果有剩余的元素,将未遍历完的链表添加到L3
if (p1 != nullptr) {
L3->next = p1;
} else {
L3->next = p2;
}
}
// 示例如何使用这个函数
int main() {
// 实例化三个顺序表...
// 使用上述函数合并它们
mergeList(L1, L2, L3);
return 0;
}
```
阅读全文