//JAVA 好理解!
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param l1 ListNode类
* @param l2 ListNode类
* @return ListNode类
*/
public ListNode mergeTwoLists (ListNode l1, ListNode l2) {
if(l1 ==null) return l2;
if(l2 ==null) return l1;
//设置一个新的链表的头结点。因为不知道l1和l2哪个头结点在前面。
ListNode head = new ListNode(0); //临时的头节点
ListNode Pnode = head; //头结点的指针
//开始拼接 l1 l2
while(l1 !=null && l2 != null){
if(l1.val >= l2.val){
Pnode.next = l2;
l2 = l2.next; //开始比较l2的下个节点
}else{
Pnode.next = l1;
l1 = l1.next; //开始比较l1的下个节点
}
Pnode = Pnode.next; //拼接一个节点后,指针后移一步
}
//最后看l1 l2哪个还剩下节点,就直接拼在后面,
if(l1!=null) Pnode.next=l1;
if(l2!=null) Pnode.next=l2;
//返回新链表的头结点。 head不是新链表的头结点,
//head的下一个才是l1或者l2的第一个节点,才是头结点。
return head.next;
}
}


京公网安备 11010502036488号