單向鏈表的元素查找和刪除
阿新 • • 發佈:2017-08-23
boolean new spa ... int lean sta nbsp 過程
整個過程以根節點為基礎,先確定根節點的情況,再一次類推
1 package test02; 2 3 /* 4 * 單向鏈表的正宗實現 5 * */ 6 7 class Link{ 8 class Node{ 9 private String data; 10 private Node next; 11 public Node(String data){ 12 this.data = data; 13 } 14 public void addNode(Node newNode){15 if(this.next == null){ 16 this.next = newNode; 17 }else{ 18 this.next.addNode(newNode); 19 } 20 } 21 public void printNode(){ 22 System.out.println(this.data); 23 if(this.next != null){ 24 this.next.printNode(); 25 } 26 } 27 public boolean searchNode(String data){ //內部定義搜索方法 28 if((this.data).equals(data)){ //判斷當前節點內容是否與查找的一致 29 return true; 30 }else{ 31 if(this.next != null){ 32 returnthis.next.searchNode(data); 33 }else{ 34 return false; 35 } 36 } 37 } 38 public void deleteNode(String data){ //刪除節點,仍然以根節點為基礎 39 if(this.next == null){ 40 41 }else{ 42 if((this.next.data).equals(data)){ 43 this.next = this.next.next; 44 }else{ 45 this.next.deleteNode(data); 46 } 47 } 48 } 49 } 50 Node root; 51 boolean b; 52 public void add(String data){ 53 Node newNode = new Node(data); //第一步就是生成節點,接下來就可以參考鏈表的簡單實現方法 54 if(this.root == null){ //抓住根節點是首要任務,以後的其他操作都可以建立在根節點上 55 this.root = newNode; 56 }else{ 57 this.root.addNode(newNode); 58 } 59 } 60 public void printnode(){ 61 this.root.printNode(); 62 } 63 public boolean contains(String data){ //判斷元素是否存在 64 return this.root.searchNode(data); 65 66 } 67 public void delete(String data){ 68 if(this.root == null){ 69 70 }else{ 71 if((this.root.data).equals(data)){ 72 this.root = this.root.next; 73 this.delete(data); //如果根節點的下一個節點也是查找內容,則遞歸 74 }else{ 75 this.root.deleteNode(data); 76 } 77 } 78 } 79 } 80 81 public class LianBiao01 { 82 83 public static void main(String[] args) { 84 Link l = new Link(); 85 l.add("ROOT"); 86 l.add("A"); 87 l.add("B"); 88 l.add("C"); 89 l.printnode(); 90 System.out.println(l.contains("B")); 91 System.out.println("....."); 92 l.delete("B"); 93 94 l.printnode(); 95 96 } 97 }
單向鏈表的元素查找和刪除