两个线性表怎么合并c++
时间: 2024-10-20 10:14:28 浏览: 19
在C++中,将两个线性表(通常是数组或动态链表)合并通常涉及到创建一个新的线性表,然后逐个添加两个源列表的元素到新表中。这里有一个基本的示例,假设我们有两个整数数组:
```cpp
#include <iostream>
using namespace std;
// 定义一个简单的结构体或数组作为线性表的元素
struct Node {
int data;
Node* next;
};
// 合并两个已排序的数组(递归)
Node* mergeSortedArrays(Node* arr1, Node* arr2) {
// 如果其中一个数组为空,直接返回另一个
if (arr1 == nullptr)
return arr2;
else if (arr2 == nullptr)
return arr1;
// 比较两个数组的第一个元素,选择较小的一个添加到结果中
if (arr1->data <= arr2->data) {
arr1->next = mergeSortedArrays(arr1->next, arr2);
return arr1;
} else {
arr2->next = mergeSortedArrays(arr1, arr2->next);
return arr2;
}
}
// 创建新节点并添加数据
Node* createNewNode(int value, Node* current) {
Node* newNode = new Node();
newNode->data = value;
newNode->next = current;
return newNode;
}
int main() {
Node* array1 = // 初始化第一个数组...
Node* array2 = // 初始化第二个数组...
// 创建新的根节点
Node* resultHead = nullptr;
// 合并两个数组
resultHead = mergeSortedArrays(array1, array2);
// 打印合并后的结果
while (resultHead != nullptr) {
cout << resultHead->data << " ";
resultHead = resultHead->next;
}
return 0;
}
```
阅读全文