用c语言编写两个顺序存储的有序顺序表合并成一个有序的
时间: 2025-01-04 21:39:14 浏览: 11
在C语言中,合并两个已排序的顺序表(也称为数组)通常需要遍历这两个列表并将它们按顺序连接起来。这里提供一个简单的示例,假设我们有两个整型有序数组A和B:
```c
#include <stdio.h>
// 定义一个结构体表示元素
typedef struct {
int data;
struct Node* next; // 指向下一个元素的指针
} Node;
// 合并函数
Node* mergeSortedArrays(Node* A, Node* B) {
// 初始化结果节点
Node* result = NULL;
if (A == NULL) {
return B;
}
if (B == NULL) {
return A;
}
// 判断A是否小于B,如果是,则把A添加到结果,并移动A指针
if (A->data <= B->data) {
result = A;
A = A->next;
} else {
result = B;
B = B->next;
}
// 递归地合并剩余部分
result->next = mergeSortedArrays(A, B);
return result;
}
// 测试合并函数
void printArray(Node* head) {
while (head != NULL) {
printf("%d ", head->data);
head = head->next;
}
printf("\n");
}
int main() {
// 假设你已经有了两个已经排好序的数组A和B
Node* A = ...; // 第一个有序数组头结点
Node* B = ...; // 第二个有序数组头结点
// 使用mergeSortedArrays函数合并两个数组
Node* mergedHead = mergeSortedArrays(A, B);
// 打印合并后的结果
printArray(mergedHead);
return 0;
}
```
在这个例子中,`main` 函数首先创建了两个已排序的数组`A` 和 `B` 的头结点,然后调用 `mergeSortedArrays` 函数将它们合并。`printArray` 函数用于打印合并后的数组。
阅读全文