c语言中, 将两个无序顺序表L1,L2合并为一个新的顺序表
时间: 2023-12-03 08:42:18 浏览: 124
可以按照以下步骤实现:
1. 定义一个新的顺序表L3,长度为L1和L2的长度之和。
2. 分别遍历L1和L2,将元素按照升序插入到L3中。
3. 如果L1和L2的长度不一样,将剩余的元素直接追加到L3的尾部。
4. 返回L3作为合并后的顺序表。
下面是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
void merge(SqList L1, SqList L2, SqList *L3) {
int i = 0, j = 0, k = 0;
while (i < L1.length && j < L2.length) {
if (L1.data[i] < L2.data[j]) {
L3->data[k++] = L1.data[i++];
} else {
L3->data[k++] = L2.data[j++];
}
}
while (i < L1.length) {
L3->data[k++] = L1.data[i++];
}
while (j < L2.length) {
L3->data[k++] = L2.data[j++];
}
L3->length = k;
}
int main() {
SqList L1 = { {3, 1, 4, 2}, 4 };
SqList L2 = { {6, 5, 7}, 3 };
SqList L3;
merge(L1, L2, &L3);
for (int i = 0; i < L3.length; i++) {
printf("%d ", L3.data[i]);
}
printf("\n");
return 0;
}
```
输出结果为:1 2 3 4 5 6 7。注意,这里假设L1和L2中的元素都不重复,如果有重复元素需要进行去重操作。
阅读全文