import java.lang.*; import java.util.*; import node.*; class MergeLists { public static ListNode mergeTwoLists(ListNode list1, ListNode list2) { if (list1 == null && list2 == null) return new ListNode(); else if (list1 == null) return list2; else if (list2 == null) return list1; ListNode curr1 = list1; ListNode curr2 = list2; ListNode head; if (curr1.val < curr2.val) { head = curr1; curr1 = curr1.next; } else { head = curr2; curr2 = curr2.next; } ListNode node = head; while (curr1 != null && curr2 != null) { if (curr1.val < curr2.val) { node.next = curr1; curr1 = curr1.next; } else { node.next = curr2; curr2 = curr2.next; } node = node.next; } if (curr1 == null) { node.next = curr2; } else { node.next = curr1; } return head; } public static void main(String[] args) { ListNode second1 = new ListNode(4, null); ListNode first1 = new ListNode(2, second1); ListNode list1 = new ListNode(1, first1); ListNode second2 = new ListNode(4, null); ListNode first2 = new ListNode(3, second2); ListNode list2 = new ListNode(1, first2); ListNode curr = mergeTwoLists(list1, list2); while (curr != null) { System.out.println(curr.val); curr = curr.next; } } }