用顺序表和单链表分别实现求集合的并集、交集和差集。
2个回答
展开全部
#include<stdio.h>
#define maxsize 100
struct Sqlist
{
int elem[maxsize];
int length;
};
void difference(Sqlist &la,Sqlist lb)
{ //求A与B的并集
int i,j,e;
for(i=0;i<lb.length;i++)
{
e=lb.elem[i]; j=0;
while((j<la.length)&&(la.elem[j]!=e)) j++;
if(j==la.length){
la.elem[la.length]=e;la.length++;}
}
}
//求A与B的交集
void Intersection(Sqlist &la,Sqlist lb)
{int i,j;
static int n=0;
for(i=0;i<lb.length;i++)
{ j=0;
while(j<la.length&&la.elem[j]!=lb.elem[i])
j++;
if(la.elem[j]==lb.elem[i])
{
la.elem[n]=lb.elem[i];
n++;
}
}
void main()
{
int i;
struct Sqlist la,lb,lc;
printf("请输入集合A、集合B的元素个数\n");
scanf("%d %d",&la.length,&lb.length);
printf("请输入集合A的元素\n");
for(i=0;i<la.length;i++)
scanf("%d",&la.elem[i]);
printf("请输入集合B的元素\n");
for(i=0;i<lb.length;i++)
scanf("%d",&lb.elem[i]);
difference(la,lb);
printf("并集中的元素为:\n");
for(i=0;i<la.length;i++)
printf("%-4d",la.elem[i]);
printf("\n");
Intersection(la,lb);
printf("交集中的元素为:\n");
for(i=0;i<n;i++)
printf("%-4d",la.elem[i]);
printf("\n");
}
我只会顺序表的
#define maxsize 100
struct Sqlist
{
int elem[maxsize];
int length;
};
void difference(Sqlist &la,Sqlist lb)
{ //求A与B的并集
int i,j,e;
for(i=0;i<lb.length;i++)
{
e=lb.elem[i]; j=0;
while((j<la.length)&&(la.elem[j]!=e)) j++;
if(j==la.length){
la.elem[la.length]=e;la.length++;}
}
}
//求A与B的交集
void Intersection(Sqlist &la,Sqlist lb)
{int i,j;
static int n=0;
for(i=0;i<lb.length;i++)
{ j=0;
while(j<la.length&&la.elem[j]!=lb.elem[i])
j++;
if(la.elem[j]==lb.elem[i])
{
la.elem[n]=lb.elem[i];
n++;
}
}
void main()
{
int i;
struct Sqlist la,lb,lc;
printf("请输入集合A、集合B的元素个数\n");
scanf("%d %d",&la.length,&lb.length);
printf("请输入集合A的元素\n");
for(i=0;i<la.length;i++)
scanf("%d",&la.elem[i]);
printf("请输入集合B的元素\n");
for(i=0;i<lb.length;i++)
scanf("%d",&lb.elem[i]);
difference(la,lb);
printf("并集中的元素为:\n");
for(i=0;i<la.length;i++)
printf("%-4d",la.elem[i]);
printf("\n");
Intersection(la,lb);
printf("交集中的元素为:\n");
for(i=0;i<n;i++)
printf("%-4d",la.elem[i]);
printf("\n");
}
我只会顺序表的
追问
谢谢啦 嘿嘿
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询