Files
Data_Structure/homework240306/main.cpp
Launchcore b671321535 2024-3-8
Add Union & Fix
2024-03-08 08:41:13 +08:00

76 lines
1.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include <iostream>
using namespace std;
#include "SqList.h"
template <class DT>
bool CreateListNoRepeat(SqList<DT>& L, int n)
{
int i;
if (n > L.size)
{
cout << "元素个数大于表长,不能创建!" << endl;
return false;
}
cout << "请依次输入" << n << "个元素值:" << endl;
for (i = 1; i <= n; i++)
{
int temp;
cin >> temp;
if (LocateElem_e(L, temp) > 0) i--;
else L.elem[i - 1] = temp;
L.length++;
}
L.length = n;
return true;
}
template <class DT>
void Union(SqList<DT>& A, const SqList<DT>& B)
{
for (int i = 0; i < B.length; ++i)
{
if (LocateElem_e(A, B.elem[i]) == 0)
{
InsertElem_i(A, A.length + 1, B.elem[i]);
}
}
}
template <class DT>
void Intersection(SqList<DT>& A, const SqList<DT>& B)
{
int k = 0;
for (int i = 0; i < A.length; ++i)
{
if (LocateElem_e(B, A.elem[i]) > 0)
{
A.elem[k++] = A.elem[i];
}
}
A.length = k;
}
int main()
{
SqList<int> A;
SqList<int> B;
InitList(A, 32);
InitList(B, 32);
int length_a, length_b;
cout << "请输入集合A的元素个数: ";
cin >> length_a;
CreateListNoRepeat(A, length_a);
cout << "请输入集合B的元素个数: ";
cin >> length_b;
CreateListNoRepeat(B, length_b);
cout << "集合A: ";
DispList(A);
cout << "集合B: ";
DispList(B);
Union(A, B);
cout << "AB: ";
DispList(A);
A.length = length_a; // Reset A to its original length
Intersection(A, B);
cout << "A∩B: ";
DispList(A);
DestroyList(A);
DestroyList(B);
return 0;
}