Java实现合并两个有序链表

tech2025-12-06  6

public class MergeTwoLists { public static class ListNode { int val; ListNode next; ListNode(int x) { this.val = x; } public int getData() { return this.val; } } public static ListNode mergeTwoLists(ListNode l1, ListNode l2) { if (l1 == null) { return l2; } if (l2 == null) { return l1; } if (l1.val < l2.val) { l1.next = mergeTwoLists(l1.next, l2); return l1; } else { l2.next = mergeTwoLists(l1, l2.next); return l2; } } public static ListNode mergeTwoListNode(ListNode l1, ListNode l2) { ListNode p1 = l1; ListNode p2 = l2; ListNode p3 = new ListNode(0); ListNode p = p3; while (true) { if (p1 == null && p2 == null) { break; } else if (p1 == null && p2 != null) { p.next = p2; break; } else if (p1 != null && p2 == null) { p.next = p1; break; } else if (p1.val <= p2.val) { p.next = p1; p1 = p1.next; } else { p.next = p2; p2 = p2.next; } p = p.next; } return p3.next; } public static void print(ListNode listNode) { ListNode curNode = listNode; while (curNode.next != null) { System.out.print(curNode.val + "->"); curNode = curNode.next; } System.out.print(curNode.val); System.out.println(); // while (listNode.next != null){ // System.out.print(listNode.val + "->"); // listNode = listNode.next; // } // System.out.print(listNode.val); // System.out.println(); } public static void main(String[] args) { ListNode listNode1 = new ListNode(1); ListNode listNode2 = new ListNode(2); ListNode listNode3 = new ListNode(5); listNode1.next = listNode2; listNode2.next = listNode3; // print(listNode1); ListNode listNode4 = new ListNode(1); ListNode listNode5 = new ListNode(3); ListNode listNode6 = new ListNode(4); listNode4.next = listNode5; listNode5.next = listNode6; ListNode listNode = mergeTwoListNode(listNode1, listNode4); print(listNode); } }
最新回复(0)