/** * @author liizzz * @date 2019-10-24 */ public class S17 { public static void main(String[] args) { S17 s17 = new S17(); ListNode list1 = s17.init1(); ListNode list2 = s17.init2(); ListNode retList = s17.merge(list1, list2); ListNode temp = retList; System.out.println("合并后的链表为: "); while (temp != null) { System.out.print(temp.val + " --> "); temp = temp.next; } System.out.println(); } public ListNode init1() { ListNode head = new ListNode(0); ListNode node = head; for (int i = 2; i < 10; i = i + 2) { node.next = new ListNode(i); node = node.next; } System.out.println("list1 链表为:"); ListNode temp = head; while (temp != null) { System.out.print(temp.val + " --> "); temp = temp.next; } System.out.println(); return head; } public ListNode init2() { ListNode head = new ListNode(1); ListNode node = head; for (int i = 3; i <= 10; i = i + 2) { node.next = new ListNode(i); node = node.next; } System.out.println("list2 链表为:"); ListNode temp = head; while (temp != null) { System.out.print(temp.val + " --> "); temp = temp.next; } System.out.println(); return head; } public ListNode merge(ListNode list1, ListNode list2) { if (list1 == null) { return list2; } if (list2 == null) { return list1; } ListNode root; if (list1.val < list2.val) { root = new ListNode(list1.val); list1 = list1.next; } else { root = new ListNode(list2.val); list2 = list2.next; } ListNode node = root; while (list1 != null && list2 != null) { if (list1.val < list2.val) { //list1 前进1 node.next = new ListNode(list1.val); node = node.next; list1 = list1.next; } else { node.next = new ListNode(list2.val); node = node.next; list2 = list2.next; } } while (list1 != null) { node.next = new ListNode(list1.val); node = node.next; list1 = list1.next; } while (list2 != null) { node.next = new ListNode(list2.val); node = node.next; list2 = list2.next; } return root; } class ListNode { int val; ListNode next; public ListNode(int val) { this.val = val; next = null; } public ListNode() { } } }
原文:https://www.cnblogs.com/liizzz/p/11733625.html