用c语言写输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围: , 要求:空间复杂度 ,时间复杂度
时间: 2023-05-21 08:06:44 浏览: 87
实现两个链表的合并(C语言)
以下是用C语言实现合并递增链表的代码,空间复杂度为O(1),时间复杂度为O(n)。
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if (l1 == NULL) return l2;
if (l2 == NULL) return l1;
ListNode* merged = (ListNode*)malloc(sizeof(ListNode));
ListNode* p = merged;
while (l1 && l2) {
if (l1->val <= l2->val) {
p->next = l1;
l1 = l1->next;
} else {
p->next = l2;
l2 = l2->next;
}
p = p->next;
}
if (l1) p->next = l1;
if (l2) p->next = l2;
return merged->next;
}
阅读全文