从键盘输入包含m个整数的集合存入数组a中、包含 n个整数的集合存入数组b中,求a和b的并集c。要求: 用指针操作数组。
时间: 2024-01-22 20:19:30 浏览: 71
利用指针和数组实现两个集合的并交操作
下面是对应的C++代码:
```cpp
#include <iostream>
using namespace std;
void unionSet(int *a, int m, int *b, int n, int *c) {
int i = 0, j = 0, k = 0;
while (i < m && j < n) {
if (*(a + i) < *(b + j)) {
*(c + k++) = *(a + i++);
} else if (*(a + i) > *(b + j)) {
*(c + k++) = *(b + j++);
} else {
*(c + k++) = *(a + i++);
j++;
}
}
while (i < m) {
*(c + k++) = *(a + i++);
}
while (j < n) {
*(c + k++) = *(b + j++);
}
}
int main() {
int m, n;
cout << "请输入数组a的长度m: ";
cin >> m;
int *a = new int[m];
cout << "请输入数组a中的元素: ";
for (int i = 0; i < m; i++) {
cin >> *(a + i);
}
cout << "请输入数组b的长度n: ";
cin >> n;
int *b = new int[n];
cout << "请输入数组b中的元素: ";
for (int i = 0; i < n; i++) {
cin >> *(b + i);
}
int *c = new int[m + n];
unionSet(a, m, b, n, c);
cout << "a和b的并集c为: ";
for (int i = 0; i < m + n; i++) {
cout << *(c + i) << " ";
}
cout << endl;
delete[] a;
delete[] b;
delete[] c;
return 0;
}
```
这个程序中,我们先分别输入数组a和数组b的长度m和n,然后动态分配数组a、数组b和数组c的空间。接着,我们输入数组a和数组b中的元素,并调用unionSet函数求出它们的并集c。最后,我们输出数组c中的元素,并释放动态分配的空间。
阅读全文