并集

问题:假设利用两个线性表LA和LB分别表示两个集合A和B(即:线性表中的数据元素即为集合中的成员),现要求一个新的集合A=A∪B。这就要求对线性表做如下操作:扩大线性表LA,将存在于线性表LB中而不存在于线性表LA中的数据元素插入到线性表LA中去。只要从线性表LB中依次取得每个元素,并依值在线性表LA中进行查访,若不存在,则插入之。上述操作过程可用下列算法描述之。

输入:有多组测试数据,每组测试数据占两行。第一行是集合A,第一个整数m(0<m<=100)代表集合A起始有m个元素,后面有m个整数,代表A中的元素。第二行是集合B,第一个整数n(0<n<=100)代表集合B起始有n个元素,后面有n个整数,代表B中的元素。每行中整数之间用一个空格隔开。

输出:每组测试数据输出n+2行:前两行分别输出集合A、集合B中的数据,后面n行是每次从B中取出元素插入到A尾部后的集合A。每行整数之间用一个空格隔开,每组测试数据之间用一行空行隔开。

样例输入:

5 1 5 2 6 3

3 1 7 9

1 3

2 2 7

4 2 5 1 4

4 1 2 4 5

样例输出:

1 5 2 6 3

1 7 9

1 5 2 6 3

1 5 2 6 3 7

1 5 2 6 3 7 9


3

2 7

3 2

3 2 7


2 5 1 4

1 2 4 5

2 5 1 4

2 5 1 4

2 5 1 4

2 5 1 4

代码1(数组):

#include <iostream>

using namespace std;

int main(){

    int a[101],b[101],n,m;

    while(cin>>n){

        int i=0,j=0;

        for(i=0;i<n;i++){

            cin>>a[i];

        }

        cin>>m;

        for(j=0;j<m;j++){

            cin>>b[j];

        }

        for(i=0;i<n;i++){

            cout<<a[i]<<" ";

        }

        cout<<endl;

        for(i=0;i<m;i++){

            cout<<b[i]<<" ";

        }

        cout<<endl;

        for(i=0;i<m;i++){

            bool k=true;

            for(j=0;j<n;j++){

                if(b[i]==a[j]){

                    k=false;

                    break;

                }

            }

            if(k){

                //是a的最后一个

                a[n++]=b[i];

            }

            for(j=0;j<n;j++){

                cout<<a[j]<<" ";

            }

            cout<<endl;

        }

            cout<<endl;

    }

    return 0;

}

代码2:

#include <iostream>

#include <set>

using namespace std;

int main()

{

    set<int> s1,s2;

    int  n,m,i,j,a;

    while(cin>>n){

        for(i=0;i<n;i++){

            cin>>a;

            s1.insert(a);

        }

        cin>>m;

        for(j=0;j<m;j++){

            cin>>a;

            s2.insert(a);

        }

        for(set<int>::iterator it=s2.begin();it!=s2.end();it++){

            s1.insert((*it));

            for(set<int>::iterator it1=s1.begin();it1!=s1.end();it1++){

                cout<<(*it1)<<" ";

            }

            cout<<endl;

        }

        cout<<endl;

    }

    return 0;

}

结果截图:


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • #include #include<conio.h> //控制台数据输入输出的函数 #include<fstrea...
    黑键_阅读 4,957评论 0 1
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,910评论 0 2
  • 题目类型 a.C++与C差异(1-18) 1.C和C++中struct有什么区别? C没有Protection行为...
    阿面a阅读 12,303评论 0 10
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,174评论 0 2
  • 技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1....
    CurryCoder阅读 2,224评论 0 1

友情链接更多精彩内容