
解题思路:这题思路就是遍历两个链表,这相当于是归并排序的合并部分的代码,先创建一个虚拟头结点,next节点作为返回节点,设置个p节点负责记录,然后同时遍历两个链表,每个值进行对比,小的值的节点作为p的next,然后p=p.next,那个小的值的节点等于其next节点,然后继续遍历,直到某个链表的节点到null,然后把另一个链表的节点接到p的后面。
/*** 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 list1, ListNode list2) {ListNode dummy_head = new ListNode();ListNode p = dummy_head;while(list1!=null&&list2!=null){if(list1.val<list2.val){p.next = list1;list1 = list1.next;}else{p.next = list2;list2 = list2.next;}p = p.next;}if(list1!=null) p.next = list1;if(list2!=null) p.next = list2;return dummy_head.next;}
}