《有两个集合用两个线性表LA和LB表示即线性表中的数据元素即为集合中的成员现要求一个新的集合》由会员分享,可在线阅读,更多相关《有两个集合用两个线性表LA和LB表示即线性表中的数据元素即为集合中的成员现要求一个新的集合(5页珍藏版)》请在人人文库网上搜索。
1、例2-1 假设有两个集合A和B分别用两个线性表LA和LB表示,即:线性表中的数据元素即为集合中的成员。现要求一个新的集合AAB。/上述问题可演绎为:要求对线性表作如下操作:扩大线性表LA,将存在于线性表LB中而不存在于线性表LA中的数据元素插入到线性表LA中去。/操作步骤:1从线性表LB中依次察看每个数据元素;GetElem(LB,i)e2依值在线性表LA中进行查访;LocateElem(LA,e,equal( )3若不存在,则插入之。ListInsert(LA,n+1,e)/void union(List &La,List Lb)La_len=ListLength(La);/求线性表的长度L。
2、b_len=ListLength(Lb);for(i=1;i#include #include List.hStatus InitList(List &L)/构造一个空的线性表L。L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(!L.elem) exit(OVERFLOW);L.length=0;L.listsize=LIST_INIT_SIZE;return OK;/InitListvoid CreateList(List &L, int a,int n)/顺序输入n个数据元素,建立顺序表int i;for(i=0;iL。
3、.length+1) return ERROR;/i值不合法if(L.length=L.listsize) /当前存储空间已满,增加分配newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);if(!newbase) exit(OVERFLOW);/存储分配失败L.elem=newbase;/新基址L.listsize+=LISTINCREMENT;/增加存储容量 q=&(L.elemi-1);/q为插入位置for(p=&(L.elemL.length-1);p=q;-p) *(p+1)=*p;。
4、 /插入位置及之后的元素右移*q=e;/插入e+L.length;/表长增1return OK; / ListInsert void PrintList(List L)/ 输出顺序表Lint i;printf(n);for(i=1;i#include #include List.hint a=3,5,8,11;int b=2,6,8,9,11,15,20;Status equal(ElemType,ElemType);void Union(List &,List);Status equal(ElemType x,ElemType y)return x=y;void Union(List &La。
5、,List Lb)/ 将所有在线性表Lb中但不在La中的数据元素插入到La中int i;int e;int La_len,Lb_len;La_len=ListLength(La);Lb_len=ListLength(Lb);for(i=1;i=Lb_len;i+)GetElem(Lb,i,e);if(!LocateElem(La,e,equal)ListInsert(La,+La_len,e);/Unionint main()List La,Lb;InitList(La);InitList(Lb);CreateList(La,a,4);CreateList(Lb,b,7);printf(集合A:);PrintList(La);printf(集合B:);PrintList(Lb);Union(La,Lb);printf(集合A U B:);PrintList(La);printf(A与B的并集对吗?);getchar();return 0;。