資料結構——雙向連結串列
普通連結串列的節點由節點值和指向下一個節點的指標組成。雙向連結串列顧名思義,節點中多一個指標可以指向前一個節點。
優點:可以得到前節點,這樣在只有當前節點的情況下,可以刪除本節點。
class Node {
public int val;
public Node next, prev;
public Node(int v) {
this.val = v;
}
}
class DoubleList {
private Node head, tail; // 頭尾虛節點
private int size; // 連結串列元素數
public DoubleList() {
head = new Node(0);
tail = new Node(0);
head.next = tail;
tail.prev = head;
size = 0;
}
// 在連結串列頭部新增節點 x
public void addFirst(Node x) {
x.next = head.next;
x.prev = head;
head.next.prev = x;
head.next = x;
size++;
}
// 刪除連結串列中的 x 節點(x 一定存在)
public void remove(Node x) {
x.prev.next = x.next;
x.next.prev = x.prev;
size--;
}
// 刪除連結串列中最後一個節點,並返回該節點
public Node removeLast() {
if (tail.prev == head)
return null;
Node last = tail.prev;
remove(last);
return last;
}
// 返回連結串列長度
public int size() { return size; }
}
相關文章
- 資料結構--陣列、單向連結串列、雙向連結串列資料結構陣列
- 資料結構之雙向連結串列資料結構
- 資料結構實驗之連結串列九:雙向連結串列資料結構
- 資料結構(雙向連結串列的實現)資料結構
- 資料結構-雙向連結串列(Python實現)資料結構Python
- 資料結構-單連結串列、雙連結串列資料結構
- 畫江湖之資料結構【第一話:連結串列】雙向連結串列資料結構
- 畫江湖之資料結構 [第一話:連結串列] 雙向連結串列資料結構
- 連結串列-雙向連結串列
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 連結串列-雙向通用連結串列
- 結構與演算法(03):單向連結串列和雙向連結串列演算法
- python演算法與資料結構-雙向連結串列(40)Python演算法資料結構
- 連結串列-雙向非通用連結串列
- 雙向連結串列
- C語言資料結構:雙向連結串列的增刪操作C語言資料結構
- 畫江湖之資料結構【第一話:連結串列】單向連結串列資料結構
- 畫江湖之資料結構 [第一話:連結串列] 單向連結串列資料結構
- 【資料結構與演算法學習】線性表(順序表、單連結串列、雙向連結串列、迴圈連結串列)資料結構演算法
- 深入理解Redis 資料結構—雙連結串列Redis資料結構
- 資料結構 - 連結串列資料結構
- 連結串列-資料結構資料結構
- 資料結構—連結串列資料結構
- 資料結構--連結串列資料結構
- 資料結構-連結串列資料結構
- C語言資料結構:雙向迴圈連結串列的增刪操作C語言資料結構
- 資料結構與演算法(三) -- 線性表之雙向連結串列資料結構演算法
- Java學習筆記:資料結構之線性表(雙向連結串列)Java筆記資料結構
- 實現雙向連結串列
- JS資料結構第三篇---雙向連結串列和迴圈連結串列之約瑟夫問題JS資料結構
- 資料結構之php實現單向連結串列資料結構PHP
- 資料結構_連結串列_單向迴圈連結串列 & 雙向連結串列的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- 資料結構之連結串列資料結構
- 資料結構之「連結串列」資料結構
- JavaScript資料結構--連結串列JavaScript資料結構
- 資料結構-2.單向連結串列的實現資料結構
- DoublyLinkedList(雙向連結串列)——Javascript版JavaScript
- Go實現雙向連結串列Go