資料結構---自定義單向連結串列(Java實現)
阿新 • • 發佈:2019-02-18
單向連結串列是指每一個節點記憶體在一個指向下一個節點的指標,java中就是節點存在指向下一個節點的物件引用
下面是Node節點類
public class Node { private Object object; private Node next; public Object getObject() { return object; } public void setObject(Object object) { this.object = object; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } }
單向連結串列實現類
/** * @author wcx */ public class LinkedNode { private Node head; private int nodeIndex = 0; public LinkedNode() { head = new Node(); } /** * 獲取下一個元素 * @return */ public Node next() { Node node = select(nodeIndex); nodeIndex++; return node; } /** * 判斷是否存在下一個元素 * @return */ public boolean hasNext() { Node select = select(nodeIndex); if (select == null) return false; return select.getNext() != null; } public void add(Node next) { Node last = last(); last.setNext(next); } public void delete(int index) { int nodeIndex = -1; Node node = head; while (node.getNext() != null) { nodeIndex++; if (nodeIndex == index) { Node next = node.getNext().getNext(); node.setNext(next); } node = node.getNext(); if (node == null) return; } } public Node select(int index) { int nodeIndex = -1; Node node = head; while (node.getNext() != null) { if (nodeIndex == index) return node; node = node.getNext(); nodeIndex++; } return null; } /** * 查詢到最後一個連結串列元素 * @return */ private Node last() { Node node = head; while (node.getNext() != null) node = node.getNext(); return node; } /** * 列印連結串列資訊 */ public void printf() { if (head.getNext() == null) return; Node node = head.getNext(); System.out.println("================begin===================="); while (node.getNext() != null) { System.out.print(node.getObject() + " "); node = node.getNext(); } System.out.println(node.getObject()); } }