1. 程式人生 > 其它 >Java 連結串列的實現

Java 連結串列的實現

public class TestLinkList {

    public static void main(String[] args) {
        NodeManager nm = new NodeManager();
        System.out.println("初始化連結串列節點");
        nm.add(5);
        nm.add(4);
        nm.add(3);
        nm.add(2);
        nm.add(1);
        nm.showNodes();
        System.out.println(
"刪除節點之後"); nm.delete(3); nm.showNodes(); System.out.println("修改結點之後"); nm.update(5, 6); nm.showNodes(); System.out.println("尋找節點"); System.out.println(nm.find(2)); } } class NodeManager{ private Node root; public void add(int
data) { if(root==null) { root = new Node(data); } else { root.addNode(data); } } public void delete(int data) { if(root!=null) { if(root.getData()==data) { root = root.next; }
else { root.delNode(data); } } } public void update(int oldData,int newData) { if(root!=null) { if(root.getData()==oldData) { root.setData(newData); } else { root.updateNode(oldData, newData); } } } public boolean find(int data) { if(root==null) { return false; } return root.findNode(data); } public void showNodes() { if(root!=null) { System.out.println(root.data+" "); root.printNodes(); } else { System.out.println("當前連結串列沒有儲存內容"); } } public void showNodes2() { root.printNodes2(); } //節點類,由內部類實現。最好不用內部類。 private class Node{ private int data; private Node next; public Node(int data) { this.data = data; } public int getData() { return this.data; } public void setData(int data) { this.data = data; } //新增節點 public void addNode(int data) { if(this.next==null) { this.next = new Node(data); } else { this.next.addNode(data); } } //刪除節點 public void delNode(int data) { if(this.next.getData()==data) { this.next = this.next.next; } else { this.next.delNode(data); } } //修改節點 public void updateNode(int oldData,int newData) { if(this.next.getData()==oldData) { this.next.setData(newData); } else { this.next.updateNode(oldData, newData); } } //尋找節點 public boolean findNode(int data) { if(this.getData()==data) { return true; } else { if(this.next!=null) { return this.next.findNode(data); } } return false; } //列印節點 public void printNodes() { if(this.next!=null) { System.out.println(this.next.data+" "); this.next.printNodes(); } } //非遞迴方式列印節點 public void printNodes2() { Node temp = this; while(temp!=null) { System.out.println(temp.data); temp = temp.next; } } } }