剑指 Offer 25. 合并两个排序的链表
题目描述
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
解答
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
/**
比较两个链表的头结点,取小的一个插到新链表中(采用尾插法),
直到其中一个链表为空,将不为空的链表整体插到新链表的尾部
*/
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode res,rear;
res = rear = null;
while(l1 != null&&l2 != null){
if(l1.val <= l2.val){
if(res == null){ //空链表,此时插入的是第一个节点
res = rear = l1;
}else{
rear.next = l1;
rear = l1;
}
l1 = l1.next;
}else{
if(res == null){ //空链表,此时插入的是第一个节点
res = rear = l2;
}else{
rear.next = l2;
rear = l2;
}
l2 = l2.next;
}
}
if(l1 != null){
if(res == null){
res = rear = l1;
}else{
rear.next =l1;
}
}
if(l2 != null){
if(res == null){
res = rear = l2;
}else{
rear.next =l2;
}
}
return res;
}
}