集合的交并运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include
#define ListSize 100 //允许的最大长度
typedef char ListData;
typedef struct List
{
ListData data[ListSize];
int Length; //当前元素个数
}*SeqList;
void menu() //建立菜单
{
printf("|--------集合的交并运算--------|\n");
printf("|-------------菜单-------------|\n");
printf("| 1、初始化集合A |\n");
printf("| 2、初始化集合B |\n");
printf("| 3、显示集合A、B |\n");
printf("| 4、集合的并运算|\n");
printf("| 5、集合的交运算|\n");
printf("| 6、退出|\n");
printf("|———————————————|\n");
printf("\n");
}
//模块1 建立
void Creat(SeqList&L)
{
L=(SeqList)malloc(sizeof(List));
if(L==NULL)
{
printf("存储空间分配失败!\n");
exit(1);
}
L->Length=0;
}
int Length(SeqList&L)
{
return L->Length;
}
//模块2 初始化
void Begin(SeqList&L)
{
int i=0;
printf("请输入集合中的元素,按#结束。\n");
fflush(stdin); //清除缓存
do
{
scanf("%c",&L->data[i]);
L->Length++;
}
while(L->data[i++]!='#');
L->Length--;
}
//模块3 提取
int Get(SeqList&L,int i)
{
if(i>=0&&i
{
return L->data[i];
}
}
//模块4 查找
int Find(SeqList&L,ListData x)
{
int i=0;
while(i
{
i++;
}
if(i
else
return 0;
}
//模块5 插入
int Insert(SeqList&L,ListData x,int i)
{
if(i<0||i>L->Length||L->Length==ListSize)
{
return 0;
}
else
{
for(int j=L->Length;j>=i;j--)
{
L->data[j]=L->data[j-1];
}
L->data[i]=x;
L->Length++;
return 1;
}
}
//模块6 删除
int Delete(SeqList&L,int i)
{
for(int j=i;j
{
L->data[j]=L->data[j+1];
}
L->Length--;
return 1;
}
//模块7 求并
void Union(SeqList&A,SeqList&B) {
int n=Length(A);
int m=Length(B);
for(int i=0;i { int x=Get(B,i); int k=Find(A,x); if(k==-1) { Insert(A,x,i); n++; } } } //模块8 求交 void UUnion(SeqList&A,SeqList&B) { int i; int n=Length(A); int m=Length(B); while(i { int x=Get(B,i); if(!Find(A,x)) { Delete(B,i); i--; } else { i++; } } } //模块9 显示 void Display(SeqList&L) { int i; for(i=0;i { printf("%c",L->data[i]); } getch(); } int main() { int i; char c; SeqList A; SeqList B; while(1) { system("cls"); menu(); printf("请选择菜单项序号:\n"); scanf("%d",&i); system("cls"); switch(i) { case 1: Creat(A); Begin(A); break; case 2: Creat(B); Begin(B); break; case 3: printf("求并前的A集合是:\n"); Display(A); printf("\n"); printf("求并前的B集合是:\n"); Display(B);