leetcode单链表合并: 要求: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
单链表的合并并不难 ,要考虑的情况是排序,以及若其中的一条链表被遍历完毕之后,则不需要在进行遍历,直接将其放到新链表的后端即可。
/** * 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 l1, ListNode l2) { ListNode dummyHead = new ListNode(0); ListNode p = dummyHead; ListNode p1=l1,p2=l2; while(p1!=null && p2!=null){ int x = p1.val; int y = p2.val; if(x<=y){ p.next=new ListNode(x); p1 = p1.next; } else { p.next=new ListNode(y); p2= p2.next; } } while(p1!=null){ p.next = new ListNode(p1.val); p1 = p1.next; p= p.next; } while(p2!=null){ p.next = new ListNode(p2.val); p2 = p2.next; p = p.next; } return dummyHead.next; } }