用c语言编写程序,输入两个单调递增的链表,输出两个链表合成后的链表,合成后的链表满足单调不减规则
时间: 2024-10-21 13:18:24 浏览: 30
在 C 语言中,你可以创建一个函数来合并两个单调递增的链表。首先,我们需要定义链表节点结构,并创建函数来判断和合并两个链表。假设头结点已存在并且链表已经排序好。
以下是合并两个单调递增链表的基本步骤:
1. 定义链表节点结构:
```c
typedef struct ListNode {
int val; // 节点值
struct ListNode* next; // 指向下一个节点的指针
} ListNode;
```
2. 创建辅助函数来合并链表:
```c
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode dummy(0); // 创建虚拟头节点
ListNode* tail = &dummy;
// 遍历两个链表
while (l1 != NULL && l2 != NULL) {
if (l1->val <= l2->val) { // 将较小的节点添加到新链表
tail->next = l1;
l1 = l1->next;
} else {
tail->next = l2;
l2 = l2->next;
}
tail = tail->next; // 更新尾部节点
}
// 添加剩余链表(如果有的话)
if (l1 != NULL) {
tail->next = l1;
} else {
tail->next = l2;
}
return dummy.next; // 返回新链表的头节点
}
```
这个函数会合并两个单调递增的链表,使得结果链表也是单调递增的。
阅读全文