標籤:auth ret logs pac 資料 遍曆 equals family font
概念:鏈表可以使一種有序或無序的列表,內容通常儲存在記憶體中分散的位置上,有節點群組成,每一個節點的結構都相同,節點分為資料域和鏈域,資料域存放內容,鏈域存放的是下一個節點指標。
基本方法實現:
新增節點:
刪除節點:
列印節點:
數組實現單鏈表:
建立節點類:Node.java
package LinkPackage;/** * @author zh * 節點模型 */public class Node { String text; Node next; //頭結點構造器 public Node(){ this.text = ""; this.next = null; } //節點構造器 public Node(String text){ this.text = text; this.next = next; } @Override public String toString() { return "Node{" + "text=‘" + text + ‘\‘‘ + ", next=" + next + ‘}‘; }}
建立鏈表類:Link.java
package LinkPackage;public class Link { //頭結點 private Node head; //構造鏈表 public Link(){ head = new Node(); } //添加節點 public void addNode(String text){ //建立需要添加的節點 Node node = new Node(text); //建立臨時節點 Node temp = head; while(temp.next != null){ //將迴圈條件更改 temp = temp.next; } temp.next = node; } //計算長度 public int size(){ int len = 0; Node temp = head; while(temp.next != null){ len++; temp = temp.next; } return len; } /** * 列印鏈表節點 */ public void displayLink(){ //設定臨時節點 Node temp = head; //開始遍曆 while(temp.next != null){ //輸出節點 System.out.print(temp.next.text+"===>"); //開始下一個節點 temp = temp.next; } } /** * show 刪除節點 */ public void delNode(String data){ //臨時節點 Node temp = head; //開始迴圈遍曆鏈表 while(temp.next != null){ //找到刪除節點 if(temp.next.text.equals(data)){ //將鏈表的指標域指向下下個節點 temp.next = temp.next.next; //退出迴圈 break; } //不滿足條件時,找到下個節點 temp = temp.next; } } /** * show 尋找節點 */ public Node findNode(String nodeName){ //設定臨時節點 Node temp = head; //建立空節點 Node data = null; //遍曆鏈表 while(temp.next != null){ //尋找條件符合 if(temp.next.text.equals(nodeName)){ //賦值 data = temp.next; //退出迴圈 break; } //條件不符合進行下一個節點操作,也就是改變了迴圈條件 temp = temp.next; } //返回查詢結果 return data; } /** * show 反轉單鏈表 */ public Node reverse(Node node){ if(node == null || node.next == null){ return node; } Node reNode = reverse(node.next); node.next.next = node; node.next = null; return reNode; } public static void main(String args[]){ Link link = new Link(); link.addNode("測試鏈表節點新增一"); link.addNode("測試鏈表節點新增二"); link.addNode("測試鏈表節點新增三"); link.addNode("測試鏈表節點新增四"); link.addNode("測試鏈表節點新增五"); System.out.println(link.head); System.out.println("鏈表長度:"+link.size()); link.displayLink(); System.out.println(); link.delNode("測試鏈表節點新增三"); System.out.println("鏈表長度:"+link.size()); link.displayLink(); System.out.println(); Node data = link.findNode("測試鏈表節點新增四"); System.out.print(data); Node node = link.reverse(link.head); while(node.next != null){ System.out.print(node.text+"===>"); node = node.next; } }}
java資料結構:鏈表