在for迴圈中建立雙向連結串列
阿新 • • 發佈:2021-07-11
測試類
@Test public void test() { Node head = new Node(0); // 建立頭節點 Node tail = null; // 定義尾節點 Node temp = head; // 臨時節點,相當於一個遊標,初始化指向頭節點 for (int i = 1; i <= 10; i++) { Node newNode = new Node(i); // 新增節點 temp.next = newNode; // 遊標.next指向新節點 newNode.pre = temp; // 新節點.pre指向當前遊標 tail = newNode; // 把新增節點作為尾節點 temp = newNode; // 遊標向後移動 } // 已知頭節點情況下,從前向後遍歷 StringJoiner headJoiner = new StringJoiner(" -> "); Node cursor = head; while (null != cursor) { headJoiner.add(String.valueOf(cursor.index)); cursor = cursor.next; // 遊標向後移動 } System.out.println("head : " + headJoiner.toString()); // 列印 // 已知尾節點情況下,從後向遍歷 StringJoiner tailJoiner = new StringJoiner(" -> "); cursor = tail; while (null != cursor) { tailJoiner.add(String.valueOf(cursor.index)); cursor = cursor.pre; // 遊標向前移動 } System.out.println("tail : " + tailJoiner.toString()); // 列印 } } // 自定義節點物件 class Node { int index; Node pre; // 前驅節點引用 Node next; // 後繼節點引用 public Node(int index) { this.index = index; } }
列印結果:
head : 0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> 10
tail : 10 -> 9 -> 8 -> 7 -> 6 -> 5 -> 4 -> 3 -> 2 -> 1 -> 0