/**
* 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 && list2 == null)
return null;
if(list1 == null)
return list2;
if(list2 == null)
return list1;
ListNode head = (list1.val < list2.val) ? list1 : list2;
ListNode p = list1,q = list2;
if(head == p)
p = p.next;
else
q = q.next;
head.next = null;
ListNode rear = head;
while(p != null && q != null){
if(p.val < q.val){
rear.next = p;
p = p.next;
}else{
rear.next = q;
q = q.next;
}
rear = rear.next;
rear.next = null;
}
while(p != null){
rear.next = p;
p = p.next;
rear = rear.next;
rear.next = null;
}
while(q != null){
rear.next = q;
q = q.next;
rear = rear.next;
rear.next = null;
}
return head;
}
}
10-23
663
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)