力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
定义一个哨兵位的头结点,然后遍历这两个链表将小的结点放前面。然后再判断这两个链表其中哪一个没有遍历完毕,然后将没有遍历完毕的那个接在后面。
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * ListNode *next;
- * ListNode() : val(0), next(nullptr) {}
- * ListNode(int x) : val(x), next(nullptr) {}
- * ListNode(int x, ListNode *next) : val(x), next(next) {}
- * };
- */
- class Solution
- {
- public:
- ListNode* mergeTwoLists(ListNode* list1, ListNode* list2)
- {
- // 哨兵位头结点
- ListNode* phead=new ListNode(-1);
-
- ListNode* cur=phead;
-
- while(list1!=nullptr&&list2!=nullptr)
- {
- if(list1->val<=list2->val)
- {
- cur->next=list1;
- list1=list1->next;
- }
- else
- {
- cur->next=list2;
- list2=list2->next;
- }
- cur=cur->next;
- }
- if(list1!=nullptr) cur->next=list1;
- if(list2!=nullptr) cur->next=list2;
-
- return phead->next;
- }
- };