集合的合并

 利用线性表LA和LB分别表示两个集合A和B,通过对线性表的应用来将两个集合合并为一个新的集合

建立两个空表,将集合存入两个线性表中,在LA中查找LB中元素,如果不存在该元素则将元素插入线性表LA中,从而实现两个集合的合并。

/*author:sangy
  time:2021-09-16
  version:1.0
  功能描述:利用线性表La和Lb分别表示两个集合A和B,现将两个集合合并为新的集合A
 */
#include
#define MAXSIZE 100         /*线性表的最大长度*/
/*定义线性表*/
typedef struct List{
    int elem[MAXSIZE];     /*定义数组域*/
	int last;              /*线性表数组中最后元素在数组elem[]中的位置*/
}SeqList;
/*创建空表*/
void InitList(SeqList *La,SeqList *Lb)
{
	La->last=-1;
	Lb->last=-1;
}
/*合并集合A和集合B*/
void unin(SeqList *La,SeqList Lb)
{
	int i,j,La_len,Lb_len;
    int e;
	La_len=La->last;
	Lb_len=Lb.last;
	for(i=0;i<=Lb_len;i++)
	{  e=Lb.elem[i];
	   j=0;
	   while(j<=La_len&&e!=La->elem[j]) j++;    /*在La中查找e元素*/
	   if(j>La->last)                            /*La中不存在和e相同的元素,则插入之*/
		   if(La_lenelem[++(La->last)]=e;       /*插入到La的最后*/
	}
}
/*建立主函数*/
void main()
{
    int i,j;
    SeqList La;
    SeqList Lb;
    InitList(&La,&Lb);
	for(i=0;i<=10;i++){
		La.elem[i]=1+i;
		La.last+=1;
		Lb.elem[i]=5+i;
		Lb.last+=1;
	}
	unin(&La,Lb );
	for(j=0;j<=La.last;j++){
		printf("%d\n",La.elem[j]);
	}
}
 

你可能感兴趣的:(c语言,数据结构,算法)