将俩个有序顺序表合并为一个新的有序表,并返回顺序表,c语言实现
时间: 2024-11-03 14:13:03 浏览: 9
c语言数据结构顺序表合并
在 C 语言中,合并两个已排序的顺序表(数组)可以采用迭代或者递归的方式实现。这里是一个基本的迭代方法示例:
```c
#include <stdio.h>
// 结构体表示顺序表节点
typedef struct {
int data;
struct Node* next;
} Node;
// 合并两个有序链表
Node* mergeSortedLists(Node* list1, Node* list2) {
// 初始化结果头结点
Node* result = NULL;
if (list1 == NULL) {
return list2;
}
else if (list2 == NULL) {
return list1;
}
// 比较两个列表的首节点
if (list1->data <= list2->data) {
result = list1; // 把较小的数据添加到结果中
list1 = list1->next;
} else {
result = list2; // 把较大数据添加到结果中
list2 = list2->next;
}
// 继续比较并合并,直到其中一个列表为空
while (list1 != NULL && list2 != NULL) {
if (list1->data <= list2->data) {
result->next = list1;
list1 = list1->next;
} else {
result->next = list2;
list2 = list2->next;
}
result = result->next;
}
// 添加剩余的一个列表,如果有的话
if (list1 != NULL) {
result->next = list1;
} else {
result->next = list2;
}
return result;
}
int main() {
// 这里仅作演示,实际应用需要提供已经排序好的两个链表的指针
Node* list1 = ...; // 第一个链表
Node* list2 = ...; // 第二个链表
// 创建新的有序链表
Node* mergedList = mergeSortedLists(list1, list2);
// 输出或进一步操作新链表
// ...
return 0;
}
```
阅读全文