2020-10-07

    科技2024-07-16  68

    C++数据结构已知A和B均是由整型数据组成的集合,使用线性表表示集合,设计算法求集合A、B的交集和并集,功能包括输入集合A,输入集合B,求A和B的并集,求A和B的交集。本题中, 线性表的第一个元素位置为1,线性表的最大长度为20。

    实现如下 #include using namespace std; class list{ public: int A[20],B[20],U[20],I[20]; int k,s,m,i,n,j; void Union(); void Inter(); void setA(); void setB();

    }; void list::setA() { cin >> m; for (i = 0; i < m; i++) { cin >> A[i]; }

    } void list::setB() { cin >> n; for (i = 0; i < n; i++) { cin >> B[i]; } } void list::Union()//并集 { int s,k = m; for (i = 0; i < m; i++) { U[i] = A[i]; } for (i = 0; i < n; i++) { s = 1; for (j = 0; j < m; j++) { if (U[j] == B[i]) { s = 0; } } if (s == 1) { U[k] = B[i]; k++; } } for (i = 0; i < k; i++) { cout << U[i] ; }

    } //交集 void list::Inter() { int k = 0; for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { if (A[i] == B[j]) { k++; I[k-1] = A[i]; }

    } } for (i = 0; i < k; i++) { cout << I[i] ; }

    }

    int main() { char i; list l; while (1) { cin >> i; if (i == ‘E’) { break; } switch(i) { case ‘A’: l.setA(); break; case ‘B’: l.setB(); break; case ‘U’: l.Union(); break;

    case 'I': l.Inter(); break; } }

    }

    Processed: 0.012, SQL: 8