java 單向鏈表

來源:互聯網
上載者:User

簡單單向鏈表

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指向下一個鏈表對象。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.