用c语言编写合并函数,将两个有序的单链表合并成一个有序的单链表
时间: 2023-06-01 20:06:01 浏览: 144
好的,我可以回答这个问题。合并两个有序的单链表需要先比较两个链表的当前节点值大小,然后将较小值的节点放入新的链表中。接着继续比较两个链表的下一节点值大小,重复上述步骤直到其中一个链表已经被遍历完毕,将另一个链表的剩余节点插入新的链表中即可。以下是合并函数的样例代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
// 创建新链表头
struct ListNode* head = malloc(sizeof(struct ListNode));
head->val = 0;
head->next = NULL;
// 创建指向新链表节点的指针
struct ListNode* cur = head;
// 比较两个链表的当前节点值大小,并插入新链表中
while (l1 && l2) {
if (l1->val < l2->val) {
cur->next = l1;
l1 = l1->next;
} else {
cur->next = l2;
l2 = l2->next;
}
cur = cur->next;
}
// 将未遍历完的链表节点插入新链表尾部
cur->next = l1 ? l1 : l2;
// 返回新链表头
return head->next;
}
```
阅读全文