@【数据结构】(指针实现动态数组,交集与并集)
利用指针来实现动态数组,求两个集合的交集和并集。
#include<iostream>
using namespace std;
void main()
{
int *p, *q;
int m, n, i, j;
cout << "请输入数组p的长度:";
cin >> m;
if (!(p = new int[m])) //分配内存
{
cout << "错误" << endl; exit(1);
}
cout << "输入数组A 中的数据:" << endl;
for (i = 0; i < m; i++)
cin >> p[i];
cout << "请输入数组q的长度:";
cin >> n;
if (!(q = new int[n])) //分配内存
{
cout << "错误" << endl; exit(1);
}
cout << "输入数组q 中的数据:" << endl;
for (i = 0; i < n; i++)
cin >> q[i];
//并集
int f = 0, c[100];
for (i = 0; i < m; i++)
{
c[f] = p[i]; f++;
}
for (j = 0; j < n; j++)
{
for (i = 0; i < m; i++)
if (q[j] == p[i])break;
if (i >= m)
{
c[f] = q[j]; f++;
}
}
cout << "并集为:" << endl;
for (i = 0; i < f; i++)
cout << c[i] << " ";
cout << endl;
//交集
cout << "交集为:";
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
if (p[i] == q[j])
{
cout << p[i] << " ";
break;
}
cout << endl;
system("pause");
}
测试示例: