用c语言编写将两个有序顺序表进行合并成一个有序的顺序表: /* 测试用例:输入: 3 1 3 5 5 2 4 6 8 10 输出:1 2 3 4 5 6 8 10
时间: 2024-09-28 17:09:38 浏览: 40
在C语言中,可以使用递归的方式合并两个有序链表,创建一个新的链表,其中节点按照从小到大的顺序排列。下面是一个简单的示例代码,假设`ListNode`是链表的结构体,包含`value`数据域和`next`指针:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构
typedef struct ListNode {
int value;
struct ListNode* next;
} ListNode;
// 合并两个有序链表函数
ListNode* mergeSortedLists(ListNode* list1, ListNode* list2) {
if (list1 == NULL) { // 如果list1为空,直接返回list2
return list2;
}
if (list2 == NULL) { // 如果list2为空,直接返回list1
return list1;
}
// 比较两个链表头节点的值,选择较小的一个作为新链表的头节点
if (list1->value < list2->value) {
list1->next = mergeSortedLists(list1->next, list2); // 递归处理剩余部分
return list1;
} else {
list2->next = mergeSortedLists(list1, list2->next);
return list2;
}
}
// 创建链表节点并打印链表
void printList(ListNode* head) {
while (head != NULL) {
printf("%d ", head->value);
head = head->next;
}
printf("\n");
}
int main() {
// 创建测试用例链表
ListNode* list1 = (ListNode*)malloc(sizeof(ListNode));
list1->value = 3;
list1->next = (ListNode*)malloc(sizeof(ListNode));
list1->next->value = 1;
list1->next->next = (ListNode*)malloc(sizeof(ListNode));
list1->next->next->value = 3;
// ...添加其他元素,如5...
ListNode* list2 = (ListNode*)malloc(sizeof(ListNode));
list2->value = 5;
list2->next = (ListNode*)malloc(sizeof(ListNode));
list2->next->value = 2;
list2->next->next = (ListNode*)malloc(sizeof(ListNode));
list2->next->next->value = 4;
list2->next->next->next = (ListNode*)malloc(sizeof(ListNode));
list2->next->next->next->value = 6;
list2->next->next->next->next = (ListNode*)malloc(sizeof(ListNode));
list2->next->next->next->next->value = 8;
list2->next->next->next->next->next = (ListNode*)malloc(sizeof(ListNode));
list2->next->next->next->next->next->value = 10;
// ...添加其他元素,如10...
// 合并链表
ListNode* mergedList = mergeSortedLists(list1, list2);
// 打印合并后的链表
printList(mergedList);
free(mergedList); // 注意释放内存
return 0;
}
```
运行此程序,你会得到预期的结果:`1 2 3 4 5 6 8 10`。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)