题目:给定两个已知排好序的链表,将两链表链接,构成的新链表需要排好序
思路:从链表开头比较结点大小,若第一条链表头节点值不大于第二条,将第一链表指针指向下一个,若第一条链表值大,将第二条链表指针指向下一个。最后将剩下未到末结点的链表链接到新链表!
代码如下:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1==null&&l2==null) return null;
ListNode newHead = new ListNode(0);
ListNode result = newHead; <span style="font-family: Arial, Helvetica, sans-serif;">//新链表头指针</span>
while(l1!=null&&l2!=null){
if(l1.val<=l2.val){
result.next = l1;
l1 = l1.next;
}
else{
result.next = l2;
l2 = l2.next;
}
result = result.next;
}
if(l1!=null){ //剩下未访问的链表
result.next = l1;
}
if(l2!=null){
result.next = l2;
}
return newHead.next;
}
}