A B用线性表顺序存储,求其交集与并集的编程。。(用数据结构编程)

2025-04-10 16:13:36
推荐回答(1个)
回答1:

#include

#define MAXSIZE 50

typedef struct node
{
int data[MAXSIZE];
int length;
}SeqLink;

int len1;
int len2;
int arr[MAXSIZE];

void SeqLinkInit(SeqLink *L)//初始化
{
L->length = -1;
}

int CreatSeqLink(SeqLink *L)//创建顺序表
{
while (1)
{
if (MAXSIZE-1 < ++L->length)
{
printf("表满!\n");
return 0;
}

scanf("%d", &L->data[L->length]);

if (0 == L->data[L->length])
{
break;
}
}

return L->length;
}

void A(SeqLink *L1, SeqLink *L2)//求交集
{
int i, j;
int count = 0;

for (i=0; i {
for (j=0; j {
if (L1->data[i] == L2->data[j])
{
arr[count++] = L1->data[i];
break;
}
}
}
}

void B(SeqLink *L1, SeqLink *L2)//求并集
{
int i, j;
int num;
int flag;
int count = 0;

for (i=0; i {
arr[count++] = L1->data[i];
}

num = count;
for (i=0; i {
flag = 1;
for (j=0; j {
if (arr[j] == L2->data[i])
{
flag = 0;
break;
}
}

if (1 == flag)
{
arr[count++] = L2->data[i];
}
}
}

void Output(void)//输出
{
int i;

for (i=0; arr[i]!=0; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}

void main(void)
{
SeqLink L1;
SeqLink L2;

SeqLinkInit(&L1);
SeqLinkInit(&L2);

printf("请输入集合A:(按0结束输入)\n");
len1 = CreatSeqLink(&L1);
printf("请输入集合B:(按0结束输入)\n");
len2 = CreatSeqLink(&L2);

A(&L1, &L2);
printf("A与B交集为:\n");
Output();
B(&L1, &L2);
printf("A与B并集为:\n");
Output();

}