我是靠谱客的博主 微笑外套,最近开发中收集的这篇文章主要介绍数据结构入门----集合的交、并、差,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一. 实验要求
通过键盘,分别输入两个数据元素类型为正整数的集合A和B,以负数输入为结束条件,输出两个集合的交、并、差。从程序完善性上考虑,集合元素输入时,要有检查元素重复的功能。集合可以用数组也可以用链表存储。
二. 实验目的
通过该实验,熟练掌握循环结构、循环控制条件、分支结构和数组/链表基本操作的实现,掌握函数参数设定的有关内容,体会到用数组存储集合时,需要记录集合元素的个数,否则输出结果会出现数据越界现象。
三. 设计思想

  1. 分别将数据输入到2个int类型的数组中,在输入过程中判断输入类型是否有误。
  2. 建立交并插集的函数,各一个,然后进行数组遍历,找到相同元素就把指针往前移动一位,最后把数组输出即可

四. 主要源代码

#include "iostream"
using namespace std;

void JiaoJi(int a[], int b[], int m, int n);
void BingJi(int a[], int b[], int m, int n);
void ChaJi(int a[], int b[], int m, int n);

void main()
{
	int A[1000],B[1000];
	int i=0,j=0,x=0,count1=0,count2=0;

	cout<<"请连续输入集合A的数据,输入任意一个负数结束。"<<endl;

	for(i=0;i<=1000;i++)
	{
		cin>>A[i];

		if(!cin)
		{
			cout<<"您输入的不是整数类型,请重新输入!"<<endl;
			cin.clear();
			cin.sync();
		}
		else
		{
			if(A[i]<0)
			{
				count1=i;
				break;
			}
			else
			{
				cout<<"您刚才输入的是第"<<i+1<<"个整数。"<<endl;
			}
		}
	};

	cout<<"集合A的数据为:";

	for(i=0;i<count1;i++)
	{
		cout<<A[i]<<" ";
	}

	cout<<endl;

	cout<<"请连续输入集合B的数据,输入任意一个负数结束。"<<endl;

	for(i=0;i<=1000;i++)
	{
		cin>>B[i];

		if(!cin)
		{
			cout<<"您输入的不是整数类型,请重新输入!"<<endl;
			cin.clear();
			cin.sync();
		}
		else
		{
			if(B[i]<0)
			{
				count2=i;
				break;
			}
			else
			{
				cout<<"您刚才输入的是第"<<i+1<<"个整数。"<<endl;
			}
		}
	};

	cout<<"集合B的数据为:";

	for(i=0;i<count2;i++)
	{
		cout<<B[i]<<" ";
	}

	cout<<endl;
    
	JiaoJi(A,B,count1,count2);
	BingJi(A,B,count1,count2);
	ChaJi(A,B,count1,count2);
}

void JiaoJi(int a[], int b[], int m, int n)
{
	 cout<<"两集合交集:";

	 for(int i=0;i<m;i++)
	 {
		for(int j=0;j<n;j++)
		{
			if(a[i]==b[j])
			{
				cout<<a[i]<<' ';
				break;
			}
		}
	 }

	 cout<<endl;
}

void BingJi(int a[], int b[], int m, int n)
{
	 bool checkStatus;

	 cout<<"两集合并集:";

	 for(int i=0;i<m;i++)
	 {
		checkStatus=true;

		for(int j=0;j<n;j++)
		{
			if(a[i]==b[j])
			{
				checkStatus=false;
				break;
			}
		}

	    if(checkStatus) 
		{
			cout<<a[i]<<' ';
		}
	 }

	 for(int j=0;j<n;j++)
	 {
		cout<<b[j]<<' ';
	 }

	 cout<<endl;
}

void ChaJi(int a[], int b[], int m, int n)
{
	 bool checkStatus;

	 cout<<"两集合差集:";

	 for(int i=0;i<m;i++)
	 {
	    checkStatus=true;

	    for(int j=0;j<n;j++)
		{
			if(a[i]==b[j])
			{
				checkStatus=false;
				break;
			}
		}

		if(checkStatus)
		{
			cout<<a[i]<<' ';
		}
	 }
	 cout<<endl;
}

五. 调试与测试数据
在这里插入图片描述

最后

以上就是微笑外套为你收集整理的数据结构入门----集合的交、并、差的全部内容,希望文章能够帮你解决数据结构入门----集合的交、并、差所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部