集合的交并运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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&&iLength)

{

return L->data[i];

}

}

//模块4 查找

int Find(SeqList&L,ListData x)

{

int i=0;

while(iLength&&L->data[i]!=x)

{

i++;

}

if(iLength) //健壮性判断return 1;

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;jLength;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;iLength;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);

相关文档
最新文档