1. 程式人生 > >輸入兩個遞增連結串列,合併為一個遞增連結串列(面試題)

輸入兩個遞增連結串列,合併為一個遞增連結串列(面試題)

輸入兩個遞增連結串列,合併為一個遞增連結串列。

public class LinkedTest {

    public static void main(String[] args) {

        Node headNode1 = null;
        Node headNode2 = null;

        Node currNode1 = null;
        Node currNode2 = null;

        // 構造有序連結串列1 有序連結串列2
        for (int i = 10; i >= 0; i--) {
            if
(i % 2 == 0) { currNode1 = new Node(headNode1, i); headNode1 = currNode1; } else { currNode2 = new Node(headNode2, i); headNode2 = currNode2; } } System.out.print("有序連結串列1 -- "); print(headNode1); System.out.print("有序連結串列2 -- "
); print(headNode2); System.out.print("合併有序連結串列 -- "); print(merage(headNode1, headNode2)); } // 將兩個有序連結串列合為一個有序連結串列,使用遞迴的過程 public static Node merage(Node n1, Node n2) { if (n1 == null) { return n2; } if (n2 == null) { return
n1; } Node resNode = null; if (n1.data > n2.data) { resNode = n2; resNode.next = merage(n1, n2.next); } else { resNode = n1; resNode.next = merage(n1.next, n2); } return resNode; } // 列印輸出連結串列 public static void print(Node n) { if (n == null) { System.out.println("連結串列為空"); return; } for (Node node = n; node != null; node = node.next) { System.out.print(node.data + " "); } System.out.println(); } } class Node { Node next; int data; public Node(Node next, int data) { super(); this.next = next; this.data = data; } }