c语言实现将链表A和B合并,形成一个递增有序的新链表
时间: 2023-07-11 17:12:08 浏览: 104
好的,下面是C语言实现合并链表的代码,时间复杂度为O(n),其中n为两个链表的总长度。
```
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
struct ListNode* result = (struct ListNode*)malloc(sizeof(struct ListNode));
struct ListNode* cur = result;
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 result->next;
}
```
其中,ListNode是链表的节点定义,mergeTwoLists函数接收两个链表l1和l2作为参数,返回合并后的新链表。在函数中,我们创建一个新链表result,并创建一个指针cur指向链表的头部。然后,我们遍历两个链表,将较小的节点添加到新链表中,直到其中一个链表为空。最后,我们将剩余的节点添加到新链表中,并返回新链表的头部。
希望我的回答可以帮到你!
阅读全文