Leetcode:21. 合并两个有序链表

解法:定义一个虚构头节点pre和一个永远指向链表尾部节点的指针temp,如果两链表都不为空,比拟两链表以后节点的值,较小的节点加链表尾部,以此类推,直到退出循环。退出循环时,如果两链表之前就不为空,则退出while肯定还有一个链表不为空,因为每个链表都是有序的,因而间接将没遍历完的链表增加到总链表尾部即可。在遍历的过程中,temp始终保持在链表的尾部,用于在尾部增加节点。

class Solution {    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {        ListNode pre = new ListNode();        ListNode temp = pre;        while(l1 != null && l2 != null){            if(l1.val < l2.val){                temp.next = l1;                l1 = l1.next;            }else{                temp.next = l2;                l2 = l2.next;            }            temp = temp.next;        }        if(l1 != null) temp.next = l1;        if(l2 != null) temp.next = l2;        return pre.next;    }}