题目描述
用线性表(顺序表的实现或者链表的实现)来表示集合,利用线性表的操作实现集合的交操作。
输入
输入包含两行。
第一行表示集合A,该行的第一个数n是集合A的大小,随后有n个空格分开的整数,均为集合A的元素。
第二行表示集合B,该行的第一个数m是集合B的大小,随后有m个空格分开的整数,均为集合B的元素。
保证各个集合中不会有重复的元素。
输出
输出集合A和集合B的交集中的所有元素,用空格分开,元素输出的次序按在集合A中出现的次序。
如果交集为空,输出一空行。
样例输入 Copy
3 100 200 300
4 400 300 210 100
样例输出 Copy
100 300
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。
typedef int ElemType; //ElemType 为可定义的数据类型,此设为int类型
#define MAXSIZE 100 //顺序表可能达到的最大长度
typedef struct {
ElemType *elem; //存储空间的基地址
int length; //当前长度
} SqList;
Status InitList(SqList &L) //算法2.1 顺序表的初始化
{
//构造一个空的顺序表L
L.elem = new ElemType[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
if(!L.elem)
exit(OVERFLOW); //存储分配失败退出
L.