首先實現一個單向鏈表
先定義一個class,結構以下java
public class LinkedDemo { //當前對象id public int id; //鏈表下個節點引用 public LinkedDemo next; public LinkedDemo(int id) { this.id = id; } }
在定義一個測試方法,進行測試鏈表的添加測試
public static void main(String[] args){ //建立鏈表頭 LinkedDemo first = new LinkedDemo(1); //指向下一個節點的引用 first.next = new LinkedDemo(2); System.out.println(first.id); System.out.println(first.next.id); }
發現會打印1跟2,說明鏈表成功了,this
將頭結點的參數,指向下一個結點,構建關聯關係,就造成了鏈表spa
若是咱們須要添加一個在節點2前,增長一個節點,增長如下代碼:code
/** * 第二個節點前,插入一個新的節點 */ LinkedDemo three = new LinkedDemo(3); three.next = first.next; first.next = three; System.out.println(first.id); System.out.println(first.next.id); System.out.println(first.next.next.id);
把頭節點的參數,指向新的節點,新的節點的參數,指向之前頭結點參數指向的節點對象
------------------------------------分割線-------------------------------------three
下面實現雙向列表,其實就是增長一個上個結點的引用而已
public class DoubleLinkedDemo { //id public int id; //上個結點的引用 public DoubleLinkedDemo previous; //下個結點的引用 public DoubleLinkedDemo next; public DoubleLinkedDemo(int id) { this.id = id; } }
而後進行雙向鏈表關聯測試:io
/** * 雙向鏈表 * 節點一(也能夠叫節點頭) */ DoubleLinkedDemo one = new DoubleLinkedDemo(1); /** * 節點二 */ DoubleLinkedDemo two = new DoubleLinkedDemo(2); //two的上一個節點是first two.previous = one; //first下一個節點是two one.next = two.previous;
能夠發現,節點二的previous屬性指向告終點一,結點一的next屬性指向告終點二,若是還有結點三,也是如上,操做就行了,假如是刪除結點,只須要砍掉跟上下結點的關聯關係,上下結點,從新關聯上就能夠了class
後面補圖!引用
歡迎轉載,請註明出處跟做者,謝謝!