数据结构
已经给出了顺序表结构体SeqList的定义。 并给出了若干操作集可以调用。 请补完主函数: 实现计算集合的并集。
输入两个整数集合A和B,输出他们的交集。 如:一个元素个数集合A={11,12,13,14,15,16,17,18,19,20},集合B={11,12,15,16,19,20,25,26} 则集合A并B={11,12,13,14,15,16,17,18,19,20,25,26}。
输入要求:
输入1组数据,共占4行,代表集合A和B的元素个数和具体元素。 第1行:正整数n(n<=50),表示集合A的元素个数为n。 第2行:n个整数,用空格分隔,为集合A的数据元素。 第3行:正整数m(m<=50),表示集合B的元素个数为m。 第4行:m个整数,用空格分隔,为集合B的数据元素。
输出要求:
输出集合A和集合B的并集。
数据示例1:
输入:
5
1 3 5 7 9
5
1 2 3 4 5
输出:
集合A:1 3 5 7 9
集合B:1 2 3 4 5
A和B的并集:1 3 5 7 9 2 4
#include<stdio.h>
typedef struct{
int data[100];
int length;
}SeqList; //顺序表结构体SeqList
/*可用的操作集*/
void InitList(SeqList *list); //建空表
int Length(SeqList list); //获取表长
int GetElem(SeqList list,int i); //获得下标i的元素值(下标从0开始)
int Locate(SeqList list,int x); //根据元素值x找所在下标(下标从0开始)
void Insert(SeqList *list,int i,int x); //在顺序表list中下标i的位置,插入元素x(下标从0开始)
void Delete(SeqList *list,int i,int *x);//将顺序表list中下标i的元素删除,被删除元素通过指针x传回主函数(下标从0开始)
void PrintList(SeqList list); //输出顺序表list中所有元素值,占一行
int main() {
SeqList listA,listB;
//初始化表A和表B
int i,x,n,m;
scanf("%d",&n); //集合A的数据个数
for(i=0;i<n;i++) //输入集合A
{
scanf("%d",&x);
(填写代码)
1
(填写代码)
}
scanf("%d",&m); //集合B的数据个数
for(i=0;i<m;i++) //输入集合B
{
scanf("%d",&x);
1
(填写代码)
}
printf("集合A:"); PrintList(listA);
printf("集合B:"); PrintList(listB);
//求A和B的并集
1
printf("A和B的并集:");
1
(填写代码)
(填写代码)
1
(填写代码)
int i,x,n,m;
scanf("%d",&n); //集合A的数据个数
for(i=0;i<n;i++) //输入集合A
{
scanf("%d",&x);
}
scanf("%d",&m); //集合B的数据个数
for(i=0;i<m;i++) //输入集合B
{
scanf("%d",&x);
}
printf("集合A:"); PrintList(listA);
printf("集合B:"); PrintList(listB);
//求A和B的并集
printf("A和B的并集:");
return 0;
}
void InitList(SeqList *list){ list->length=0;}
int Length(SeqList list) {return list.length;}
int GetElem(SeqList list,int i) {return list.data[i];}
int Locate(SeqList list,int x) {for(int i=0;i<list.length;i++) if(x==list.data[i]) return i; return -1;}
void Insert(SeqList *list,int i,int x) {for(int j=list->length;j>i;j--) list->data[j]=list->data[j-1]; list->data[i]=x; list->length++;}
void Delete(SeqList *list,int i,int *x) {*x=list->data[i];for(int j=i;j<list->length;j++)list->data[j]=list->data[j+1]; list->length--;}
void PrintList(SeqList list){for(int i=0;i<list.length;i++) printf("%d ",list.data[i]); printf("\n");}