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

如题所述

第1个回答  推荐于2017-11-24
#include <stdio.h>

#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<len1; i++)
{
for (j=0; j<len2; 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<len1; i++)
{
arr[count++] = L1->data[i];
}

num = count;
for (i=0; i<len2; i++)
{
flag = 1;
for (j=0; j<num; 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();

}本回答被提问者采纳

用c++编写程序,求两线性表的交集,并集,差集。
cout<<"并集为:"<<"["<<c<<","<<d<<"]"<<","<<"["<<a<<","<<b<<"]"<<endl;cout<<"差集为:"<<"["<<a<<","

如何建立一个线性表,用c++的基本语法是什么?
2、初始化顺序表:在使用顺序表之前,首先创建一个空的顺序表,也就是初始化顺序表。这里,在程序中只需设置顺序表的结点数量ListLen为0即可。这样,后面需要添加的数据元素将从顺序表的第一个位置存储。示例代码:3、计算线性表的长度:计算线性表的长度也就是计算线性表中结点的个数,由于我们在SLTy...

求大工11秋《数据结构》在线作业1、2、3
正确答案:C 2. 具有6个顶点的无向图至少应有()条边才能确保是一个连通图。A. 5 B. 6 C. 7 D. 8 正确答案:A 3. min(A),函数的返回值是集合A的所有元素中按线性序最小的那个元素。则min({2,3,4})=( )A. 2 B. 3 C. 4 D. 0 正确答案:A 4. index(s,t)表示子串定位...

相似回答