力扣原题:21. 合并两个有序链表 - 力扣(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* ret=new ListNode(-1);
ListNode* c3=ret;
ListNode* c1=list1;
ListNode* c2=list2;
while(c1!=nullptr && c2!=nullptr){
if(c1->val>c2->val){
c3->next=c2;
c2=c2->next;
}else{
c3->next=c1;
c1=c1->next;
}
c3=c3->next;
}
if(c1!=nullptr){
c3->next=c1;
}
if(c2!=nullptr){
c3->next=c2;
}
return ret->next;
}
};
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
//三指针
if(list1==null) return list2;
if(list2==null) return list1;
ListNode newhead=new ListNode();
ListNode cur=newhead;
ListNode l1=list1;
ListNode l2=list2;
while(l1!=null && l2!=null){
if(l1.val>l2.val){
cur.next=l2;
l2=l2.next;
}else{
cur.next=l1;
l1=l1.next;
}
cur=cur.next;
}
if(l1!=null){
cur.next=l1;
}
if(l2!=null){
cur.next=l2;
}
return newhead.next;
}
}