将两个顺序表合并成一个顺序表的c语言代码是什么
时间: 2024-04-16 09:26:59 浏览: 201
下面是一个将两个顺序表合并成一个顺序表的C语言代码示例:
```c
#include <stdio.h>
#define MAX_SIZE 100
// 定义顺序表结构体
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
// 合并两个顺序表
void merge(SeqList list1, SeqList list2, SeqList *mergedList) {
int i, j, k;
i = j = k = 0;
while (i < list1.length && j < list2.length) {
if (list1.data[i] <= list2.data[j]) {
mergedList->data[k] = list1.data[i];
i++;
} else {
mergedList->data[k] = list2.data[j];
j++;
}
k++;
}
// 将剩余元素复制到合并后的顺序表中
while (i < list1.length) {
mergedList->data[k] = list1.data[i];
i++;
k++;
}
while (j < list2.length) {
mergedList->data[k] = list2.data[j];
j++;
k++;
}
mergedList->length = k;
}
// 打印顺序表元素
void printList(SeqList list) {
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
}
int main() {
SeqList list1 = {{1, 3, 5, 7, 9}, 5};
SeqList list2 = {{2, 4, 6, 8, 10}, 5};
SeqList mergedList;
merge(list1, list2, &mergedList);
printf("Merged list: ");
printList(mergedList);
return 0;
}
```
该示例中,我们使用了结构体来定义顺序表,并定义了一个`merge`函数来合并两个顺序表。在`main`函数中,我们创建了两个顺序表`list1`和`list2`,然后调用`merge`函数将它们合并成一个新的顺序表`mergedList`。最后,打印出合并后的顺序表元素。
请注意,该代码假设两个输入的顺序表已经按照升序排列。如果顺序表未排序,则需要在合并之前先对其进行排序。
阅读全文