0
点赞
收藏
分享

微信扫一扫

SWUST OJ 1045: 集合的交运算的实现

题目描述

假设有两个集合 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;
}


注意

该程序仅供学习参考!

举报

相关推荐

0 条评论