合并两个有序链表C++
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
/*** 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) {if(list1==nullptr) return list2;if(list2==nullptr) return list1;// 创建哨兵节点作为新链表的头ListNode* dummy = new ListNode(0);ListNode* current = dummy; // 当前节点指针// 双指针ListNode* l1 = list1;ListNode* l2 = list2;while(l1 && l2){// l1中的值比较小,插值if(l1->val <= l2->val){// 将l1连接到当前链表尾部current->next = l1;l1 = l1->next;}else{// 将l2连接到当前链表尾部current->next = l2;l2 = l2->next;}current = current->next; // 移动当前指针}if(l1){current->next = l1;}if(l2){current->next = l2;}// 返回哨兵节点的下一个节点(真正的头节点)return dummy->next;}
};