void union(liat &La, liat Lb)完整代码将两个线性表合并
时间: 2024-02-15 17:05:50 浏览: 77
下面是完整代码,实现将两个线性表La和Lb合并为一个线性表:
```
#include <iostream>
using namespace std;
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} liat;
void initList(liat &L, int arr[], int n) {
for (int i = 0; i < n; i++) {
L.data[i] = arr[i];
}
L.length = n;
}
void printList(liat L) {
for (int i = 0; i < L.length; i++) {
cout << L.data[i] << " ";
}
cout << endl;
}
void unionList(liat &La, liat Lb) {
int lena = La.length;
int lenb = Lb.length;
for (int i = 0; i < lenb; i++) {
bool flag = true;
for (int j = 0; j < lena; j++) {
if (Lb.data[i] == La.data[j]) {
flag = false;
break;
}
}
if (flag) {
La.data[lena++] = Lb.data[i];
}
}
La.length = lena;
}
int main() {
int arr1[] = {1, 3, 5, 7};
int n1 = sizeof(arr1) / sizeof(int);
liat L1;
initList(L1, arr1, n1);
cout << "L1: ";
printList(L1);
int arr2[] = {2, 3, 4, 7, 8};
int n2 = sizeof(arr2) / sizeof(int);
liat L2;
initList(L2, arr2, n2);
cout << "L2: ";
printList(L2);
unionList(L1, L2);
cout << "L1∪L2: ";
printList(L1);
return 0;
}
```
在该代码中,我们定义了一个结构体liat来表示线性表,其中包括一个数组data来存储数据元素,以及一个长度length来表示线性表的长度。通过initList函数,我们可以初始化一个线性表,通过printList函数,我们可以打印线性表的所有元素。
在unionList函数中,我们首先获取La和Lb的长度,然后遍历Lb中的所有元素。对于每个Lb中的元素,我们在La中查找是否已经存在,如果存在则不操作,如果不存在则将Lb中的元素添加到La中。最后,我们修改La的长度,使其等于添加Lb中元素后的长度。
在main函数中,我们先分别初始化L1和L2,然后将它们合并,并将结果打印出来。
需要注意的是,我们在函数定义中使用了&符号,表示La是一个引用类型参数,这样可以在函数内部修改La的值,达到合并两个线性表的目的。
阅读全文