Java 連結串列的實現
阿新 • • 發佈:2022-05-20
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(intdata) { 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; } } } }