C语言:.构建算法完成合并两个线性表并去除表中重复元素的运算,若 LA={‘a’,’b’,’c’,’d’,’e’},LB={‘b’,’d’,’f’,’g’},那LC表的结果为什么?请通过程序验证。
时间: 2023-11-10 12:05:31 浏览: 21
LC表的结果为:{‘a’,’b’,’c’,’d’,’e’,’f’,’g’}
以下是C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
typedef struct {
char data[MaxSize];
int length;
} SqList;
void InitList(SqList *L) {
L->length = 0;
}
void MergeList(SqList La, SqList Lb, SqList *Lc) {
int i = 0, j = 0, k = 0;
while (i < La.length && j < Lb.length) {
if (La.data[i] < Lb.data[j]) {
Lc->data[k++] = La.data[i++];
} else if (La.data[i] > Lb.data[j]) {
Lc->data[k++] = Lb.data[j++];
} else {
Lc->data[k++] = La.data[i++];
j++;
}
}
while (i < La.length) {
Lc->data[k++] = La.data[i++];
}
while (j < Lb.length) {
Lc->data[k++] = Lb.data[j++];
}
Lc->length = k;
}
void PrintList(SqList L) {
int i;
printf("L = {");
for (i = 0; i < L.length; i++) {
printf("'%c'", L.data[i]);
if (i < L.length - 1) {
printf(", ");
}
}
printf("}\n");
}
int main() {
SqList La, Lb, Lc;
int i, j;
char *arr1 = "abcde";
char *arr2 = "bdfg";
char data[MaxSize];
InitList(&La);
InitList(&Lb);
for (i = 0; arr1[i] != '\0'; i++) {
La.data[i] = arr1[i];
La.length++;
}
for (j = 0; arr2[j] != '\0'; j++) {
Lb.data[j] = arr2[j];
Lb.length++;
}
MergeList(La, Lb, &Lc);
PrintList(Lc);
return 0;
}
```
输出结果如下:
```
L = {'a', 'b', 'c', 'd', 'e', 'f', 'g'}
```