#include <stdio.h>
struct ListNode {
int val;
struct ListNode *next;
};
typedef struct ListNode ListNode;
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
if (list1 == NULL && list2 == NULL) {
return NULL;
} else if (list1 == NULL || list2 == NULL) {
return list1 ? list1 : list2;
} else {
// 1.新链表
ListNode *newlist = NULL;
ListNode *tail = NULL;
// 2.值较小的节点尾插到新链表
while (list1 && list2) {
ListNode *tmp = NULL;
if (list1->val < list2->val) {
tmp = list1;
list1 = list1->next;
} else {
tmp = list2;
list2 = list2->next;
}
if (newlist == NULL) {
newlist = tail = tmp;
} else {
tail->next = tmp;
tail = tail->next;
}
}
// 3.剩下的
tail->next = list1 ? list1 : list2;
return newlist;
}
}
【LeetCode】21. 合并两个有序链表
最新推荐文章于 2025-05-28 19:35:37 发布