集合运算(A-B)U(B-A)

时间:2023-03-09 05:46:26
集合运算(A-B)U(B-A)

实质是两个数组的合并(顺序表最好是有序的)

#include<iostream>
using namespace std;
//创建顺序表
void create(int A[],int length){
    for(int i=0;i<length;i++){
        cin>>A[i];
    }
}
//打印顺序表
void show(int A[],int length){
    cout<<A[0];
    for(int i=1;i<length;i++){
        cout<<' '<<A[i];
    }
    cout<<endl;
}
void _insert(int A[],int &length,int n){
    int i=0;
    while(i<length&&A[i]<n){
        i++;
    }
    int temp=i;
    i=length;
    while(i>temp){
        A[i]=A[i-1];
        i--;
    }
    A[temp]=n;
    length++;
}
int locate(int A[],int length,int n){
    int i=0;
    while(i<length&&A[i]!=n){
        i++;
    }
    if(i>=length){
        return 0;
    } else {
        return 1;
    }
}
//主要操作
int MergeList(int A[],int &la,int B[],int lb){
    int i=0;
    while(i<lb){
        if(locate(A,la,B[i])){
            i++;
        } else{
            _insert(A,la,B[i++]);
        }
    }
}
int main(){
    int A[20],B[20];
    int la,lb;
    //输入A,B的长度
   while(cin>>la>>lb){
	//使A的长度小于B
        if(la>lb){swap(la,lb);}
        create(A,la);//创建顺序表A
        create(B,lb);//创建顺序表B
        MergeList(A,la,B,lb);
        show(A,la);
    }
}