将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
/** * 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* l1, ListNode* l2) { ListNode* Head = join(l1, l2); return Head; } ListNode* join(ListNode* l1, ListNode* l2) { ListNode* head = new ListNode(0); //头指针 ListNode* last = head; //尾指针 while (l1!= NULL&& l2!= NULL) { if(l1->val <= l2->val) { ListNode* temp = l1; l1= l1->next; temp->next =last->next; last->next = temp; //交换指针 last = temp; //last更新 } else { ListNode* temp = l2; l2= l2->next; temp->next =last->next; last->next = temp; last = temp; } //printf("--%d ", head->next->val); } if (l1== NULL) last->next = l2; else last->next = l1; return head->next; } };