簡單單向鏈表
class Node{private String data; //儲存當前節點內容private Node next=null; //儲存下一下節點public Node(String data){this.setDate(data);}public void setDate(String data){this.data = data;}public void setNext(Node next){this.next = next;}public String getDate(){return this.data;}public Node getNext(){return this.next;}}public class LinkDemo01{public static void main(String args[]){Node n1 = new Node("節點-A");Node n2 = new Node("節點-B");Node n3 = new Node("節點-C");Node n4 = new Node("節點-D");n1.setNext(n2);n2.setNext(n3);n3.setNext(n4);printNode(n1);}public static void printNode(Node node){System.out.println(node.getDate());if(node.getNext()!=null){printNode(node.getNext());}}}
單向鏈表整合內部類
class Link{class Node{private Stringdata;private Nodenext=null;public Node(String data){this.setData(data);}public void setData(String data){this.data = data;}public void setNext(Node next){this.next = next;}public String getData(){return this.data;}public NodegetNext(){return this.next;}public void add(Node node){if(this.next==null){this.next = node;}else{this.next.add(node);}}public void print(){if(this.next==null){System.out.println(this.getData());}else{System.out.println(this.getData());this.next.print();}}public boolean search(String data){//內部搜尋方法if(data.equals(this.data)){return true;}else{//向下繼續判斷if(this.next!=null){return this.next.search(data);}else{return false;}}}public void delete(Node previous,String data){if(data.equals(this.data)){previous.next = this.next;//空出當前節點}else{if(this.next!=null){this.next.delete(this,data);//繼續尋找}}}}private Node root;//根節點public void addNode(String data){Node newNode = new Node(data);//建立新節點if(this.root==null){this.root = newNode;}else{this.root.add(newNode);}}public void printNode(){if(this.root!=null){this.root.print();//調用Node類中的輸出操作}}public boolean contains(String name){return this.root.search(name);//調用Node類的尋找方法}public void deleteNode(String data){if(this.contains(data)){//判斷節點是否存在if(this.root.getData().equals(data)){this.root = this.root.next;//修改根節點}else{this.root.next.delete(root,data);//把下一個節點的前節點和資料一起傳入進去}}}}public class LinkDemo02{public static void main(String args[]){Link l = new Link();l.addNode("節點-A");l.addNode("節點-B");l.addNode("節點-C");l.addNode("節點-D");//增加之後的內容l.printNode();//判斷是否包含節點System.out.println(l.contains("節點-X"));l.deleteNode("節點-B");//刪除之後的內容l.printNode();}}
總結:
1.類的職能不同,LinkDemo01是基礎鏈表類,而LinkDemo02的內部類為基礎鏈表類,外部類為鏈表操作類。
2.基礎鏈表類中存在一個this.next指向下一個鏈表對象。