C语言实现顺序表合并
时间: 2024-08-17 13:02:00 浏览: 58
在C语言中,我们可以使用数组来表示顺序表,然后通过嵌套循环的方式来合并两个有序的顺序表。以下是一个简单的示例,假设我们有两个已经排好序的整数顺序表`list1`和`list2`,它们的长度分别为`size1`和`size2`:
```c
#include <stdio.h>
// 定义顺序表节点结构体
typedef struct {
int value; // 节点值
struct Node *next; // 指向下一个节点的指针
} Node;
// 函数来合并两个有序顺序表
Node* mergeSortedLists(Node* list1, Node* list2) {
if (list1 == NULL) return list2;
if (list2 == NULL) return list1;
// 判断并选择较小的元素
if (list1->value <= list2->value) {
list1->next = mergeSortedLists(list1->next, list2);
return list1;
} else {
list2->next = mergeSortedLists(list1, list2->next);
return list2;
}
}
int main() {
// 初始化并填充您的两个有序列表...
Node* list1 = ...;
Node* list2 = ...;
// 创建新的头节点
Node* mergedList = mergeSortedLists(list1, list2);
// 打印合并后的顺序表
while (mergedList != NULL) {
printf("%d ", mergedList->value);
mergedList = mergedList->next;
}
return 0;
}
```
阅读全文