题目描述
假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员。编程实现集合A和集合B的交运算。
输入
第一行为集合A的数据元素个数n;
第二行输入n个集合A的数据元素 ;
第三行为集合B的数据元素的个数;
第四行输入m个集合B的数据元素
输出
A和B的交集
样例输入
8
0 5 6 3 8 7 9 10
7
1 3 4 7 8 9 5
样例输出
5 3 8 7 9
参考程序
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 50
typedef struct LNode
{
int data[Maxsize];
int rear, front;
}LinkNode;
void Init(LinkNode *&S)
{
S = (LinkNode *) malloc (sizeof(LinkNode));
S->front = S->rear = 0;
}
void Creat(LinkNode *&S, int n)
{
while(S->rear < n)
{
scanf("%d", &S->data[S->rear]);
S->rear++;
}
}
void Int(LinkNode *&A, LinkNode *&B, LinkNode *&C)
{
for(int i=0; i<A->rear; i++)
{
for(int j=0; j<B->rear; j++)
{
if(B->data[j] == A->data[i])
{
C->data[C->rear] = B->data[j];
C->rear++;
}
}
}
}
int main()
{
int a, b;
LinkNode *A, *B, *C;
Init(A), Init(B), Init(C);
scanf("%d", &a);
Creat(A, a);
scanf("\n");
scanf("%d", &b);
Creat(B, b);
Int(A, B, C);
while(C->front < C->rear)
{
printf("%d ", C->data[C->front]);
C->front++;
}
return 0;
}
注意
该程序仅供学习参考!