1 # include "test.h"
2 void equal(ElemType, ElemType);
3 void Union(SqList * La, SqList * Lb)
4 { // 将所有线性表Lb中但不在La的数据元素插入到La中(Lb不改变)
5 ElemType e;
6 int La_len, Lb_len;
7 int i;
8 La_len = ListLength(*La);//求线性波La的表长
9 Lb_len = ListLength(*Lb);//求线性表Lb的表长
10 for(i = 1;i <= Lb_len; i++)
11 {
12 GetElem(Lb, i, &e); //从Lb表中第i个元素赋给e
13 if(!LocateElem(La, e, equal))//表La中不存在和e相同的元素
14 ListInsert(La, ++La_len, e);//在表La的最后插入元素e
15 }
16 }
17
18 void MergeList(SqList * La, SqList * Lb, SqList * Lc)
19 {
20 int i = 1;
21 int j = 1;
22 int k = 0;
23
24 int La_len, Lb_len;
25 ElemType ai, bj;
26
27 InitList(Lc); //创建空表Lc
28 La_len = ListLength(*La); //求线性表La的长度
29 Lb_len = ListLength(*Lb); //求线性表Lb的长度
30 while(i <= La_len && j <= Lb_len) //i,j分别表所La和Lb的序列
31 {
32 GetElem(La, i, &ai); //将La中第i个元素赋给ai
33 GetElem(Lb, j, &bj); //将Lb中第j个元素赋给bj
34 if(ai <= bj) // 当La中的元素不大于Lb中当前元素
35 {
36 ListInsert(Lc, ++k, ai); //在Lc最后插入ai
37 i++; //i指示La的下一个元素
38 }
39 else
40 {
41 ListInsert(Lc, ++k, bj); //在Lc最后插入bj
42 j++; //j指示Lb的下一个元素
43 }
44 }
45 //以下两个循环只会执行一个
46 while(i <= La_len) //将La剩下其余元素往下读写
47 {
48 GetElem(La, i++, &ai); //将La中第i个元素赋给ai
49 ListInsert(La, ++k, ai); //在Lc表最后插入ai
50 }
51 while(j <= Lb_len) //将Lb剩下其余元素往下读写
52 {
53 GetElem(Lb, j++, &bj); //将Lb中第j个元素赋给bj
54 ListInsert(Lc, ++k, bj); //在Lc表最后插入bj
55 }
56 }
线性表的顺序表示和实现2(联合)
猜你喜欢
转载自blog.csdn.net/Cheng__C/article/details/81433519
今日推荐
周排行