21. 合并兩個有序連結清單 - 力扣(Leetcode)
将兩個升序連結清單合并為一個新的 升序 連結清單并傳回。新連結清單是通過拼接給定的兩個連結清單的所有節點組成的。

【LeetCode】21. 合并兩個有序連結清單—力扣 題解:
定義傳回的頭,和便于新連結清單插入的尾巴。
1、先判定是否存在空,傳回不空連結清單。
2、雙指針周遊。
3、将已經為空的連結清單接到尾巴上。
代碼:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
if(list1==NULL)
return list2;
if(list2==NULL)
return list1;
struct ListNode* head,*tail = NULL;
head = tail = NULL;
while(list1&&list2)
{
if(list1->val<=list2->val)
{
if(tail == NULL)
{
head = tail = list1;
}
else
{
tail->next = list1;
tail = tail->next;
}
list1 = list1->next;
}
else
{
if(tail == NULL)
{
head = tail = list2;
}
else
{
tail->next = list2;
tail = tail->next;
}
list2 = list2->next;
}
}
if(list1)
tail->next = list1;
if(list2)
tail->next = list2;
return head;
}