用C++编程集合运算及实现

【问题描述】实现集合的基本操作:并、差、交及包含判断。【基本要求】1、集合中数据的规范约定2、两个集合的并、差、交运算3、集合包含判断(子集判断)4、元素的包含判断5、各... 【问题描述】
实现集合的基本操作:并、差、交及包含判断。
【基本要求】
1、集合中数据的规范约定
2、两个集合的并、差、交运算
3、集合包含判断(子集判断)
4、元素的包含判断
5、各种操作提示明确。
【测试数据】
由合法的或非法的数据产生规范的集合
【实现提示】
1.用带表头结点的单向链表或有序链表存储多项式,多项式的项数存放在头结点;
2.用顺序表存储多项式
最好有注释!急求!!谢谢!!!
展开
 我来答
魔法师00可可
推荐于2016-09-27 · TA获得超过1660个赞
知道大有可为答主
回答量:726
采纳率:100%
帮助的人:964万
展开全部
详细c代码:

#include <stdio.h>
#include <conio.h>
#define MAX_SET_NUM 5
#define YES 1
#define NO 0
typedef struct data_set
{
int arr_A[MAX_SET_NUM];
int arr_B[MAX_SET_NUM];
int Intersection[MAX_SET_NUM];
int Union[MAX_SET_NUM * 2];
}DataSet;
void GetInterSection(DataSet * ds, int *InterSecSetNum)
{
int i,j,k = 0;
for (i = 0; i < MAX_SET_NUM; i++)
{
for (j = 0; j < MAX_SET_NUM; j++)
{
if (ds->arr_A[i] == ds->arr_B[j])
{
ds->Intersection[k] = ds->arr_A[i];
k++;
}
}
}
*InterSecSetNum = k;
}
int IsCurSetHaveX(int *set, int SetNum, int X)
{
int i;
if (SetNum > 0)
{
for (i = 0; i < SetNum; i++)
{
if ( *(set+i) == X )
return YES;
}
}
else
return NO;
return NO;
}
void GetUnion(DataSet * ds, int *UnionSetNum)
{
int i,j,k = 0;
for (i = 0; i < MAX_SET_NUM; i++)
{
if (IsCurSetHaveX(ds->Union, k, ds->arr_A[i]) == NO)
{
ds->Union[k] = ds->arr_A[i];
k++;
}
}
for (j = 0; j < MAX_SET_NUM; j++)
{
if (IsCurSetHaveX(ds->Union, k, ds->arr_B[j]) == NO)
{
ds->Union[k] = ds->arr_B[j];
k++;
}
}
*UnionSetNum = k;
}
void BubbleSort(int *set, int SetNum)
{
int i,j;
int tmp;
for (i = SetNum-1; i >= 0; i--)
{
for (j = 0; j < i; j++)
{
if ( *(set+j) > *(set+j+1) )
{
tmp = *(set+j);
*(set+j) = *(set+j+1);
*(set+j+1) = tmp;
}
}
}
}
int main(void)
{
int i,j;
DataSet ds;
int UnionSetNum = 0, InterSecSetNum = 0;
printf("input set A: \n");
for (i = 0; i < MAX_SET_NUM; i++)
{
scanf("%d", &ds.arr_A[i]);
}
printf("input set B: \n");
for (j = 0; j < MAX_SET_NUM; j++)
{
scanf("%d", &ds.arr_B[j]);
}
GetInterSection(&ds, &InterSecSetNum);
BubbleSort(ds.Intersection, InterSecSetNum);
GetUnion(&ds, &UnionSetNum);
BubbleSort(ds.Union, UnionSetNum);
printf("-----------------------------\n");
printf("Intersection: \n");
for (i = 0; i < InterSecSetNum; i++)
{
printf("%d ", ds.Intersection[i]);
}
printf("\nUnion: \n");
for (j = 0; j < UnionSetNum; j++)
{
printf("%d ", ds.Union[j]);
}
getch();
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
堵柏凌冰绿
2019-05-12 · TA获得超过3750个赞
知道大有可为答主
回答量:3091
采纳率:32%
帮助的人:190万
展开全部
详细c代码:
#include
<stdio.h>
#include
<conio.h>
#define
MAX_SET_NUM
5
#define
YES
1
#define
NO
0
typedef
struct
data_set
{
int
arr_A[MAX_SET_NUM];
int
arr_B[MAX_SET_NUM];
int
Intersection[MAX_SET_NUM];
int
Union[MAX_SET_NUM
*
2];
}DataSet;
void
GetInterSection(DataSet
*
ds,
int
*InterSecSetNum)
{
int
i,j,k
=
0;
for
(i
=
0;
i
<
MAX_SET_NUM;
i++)
{
for
(j
=
0;
j
<
MAX_SET_NUM;
j++)
{
if
(ds->arr_A[i]
==
ds->arr_B[j])
{
ds->Intersection[k]
=
ds->arr_A[i];
k++;
}
}
}
*InterSecSetNum
=
k;
}
int
IsCurSetHaveX(int
*set,
int
SetNum,
int
X)
{
int
i;
if
(SetNum
>
0)
{
for
(i
=
0;
i
<
SetNum;
i++)
{
if
(
*(set+i)
==
X
)
return
YES;
}
}
else
return
NO;
return
NO;
}
void
GetUnion(DataSet
*
ds,
int
*UnionSetNum)
{
int
i,j,k
=
0;
for
(i
=
0;
i
<
MAX_SET_NUM;
i++)
{
if
(IsCurSetHaveX(ds->Union,
k,
ds->arr_A[i])
==
NO)
{
ds->Union[k]
=
ds->arr_A[i];
k++;
}
}
for
(j
=
0;
j
<
MAX_SET_NUM;
j++)
{
if
(IsCurSetHaveX(ds->Union,
k,
ds->arr_B[j])
==
NO)
{
ds->Union[k]
=
ds->arr_B[j];
k++;
}
}
*UnionSetNum
=
k;
}
void
BubbleSort(int
*set,
int
SetNum)
{
int
i,j;
int
tmp;
for
(i
=
SetNum-1;
i
>=
0;
i--)
{
for
(j
=
0;
j
<
i;
j++)
{
if
(
*(set+j)
>
*(set+j+1)
)
{
tmp
=
*(set+j);
*(set+j)
=
*(set+j+1);
*(set+j+1)
=
tmp;
}
}
}
}
int
main(void)
{
int
i,j;
DataSet
ds;
int
UnionSetNum
=
0,
InterSecSetNum
=
0;
printf("input
set
A:
\n");
for
(i
=
0;
i
<
MAX_SET_NUM;
i++)
{
scanf("%d",
&ds.arr_A[i]);
}
printf("input
set
B:
\n");
for
(j
=
0;
j
<
MAX_SET_NUM;
j++)
{
scanf("%d",
&ds.arr_B[j]);
}
GetInterSection(&ds,
&InterSecSetNum);
BubbleSort(ds.Intersection,
InterSecSetNum);
GetUnion(&ds,
&UnionSetNum);
BubbleSort(ds.Union,
UnionSetNum);
printf("-----------------------------\n");
printf("Intersection:
\n");
for
(i
=
0;
i
<
InterSecSetNum;
i++)
{
printf("%d
",
ds.Intersection[i]);
}
printf("\nUnion:
\n");
for
(j
=
0;
j
<
UnionSetNum;
j++)
{
printf("%d
",
ds.Union[j]);
}
getch();
return
0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式