單鏈表要想在表尾插入乙個鏈結點,需要遍歷整個鍊錶直到表尾,再進行插入,效率很低;
雙端鍊錶增加了對錶尾鏈結點的引用,可以直接在表尾插入鏈結點;
下面是雙端鍊錶的實現
雙端鍊錶的使用
之前有介紹用陣列實現佇列,下面提供乙個用雙端鍊錶實現的佇列, 其中queue是佇列的基類,若有疑惑,可以先看一下前面講佇列的文章;
傳統鍊錶存在的問題: 沿鍊錶反向遍歷比較困難,很難取得前乙個鏈結點;
關鍵點: 每個鏈結點有兩個指向其他鏈結點的引用,而不是乙個;
缺點: 每次插入或刪除乙個鏈結點時,要處理四個鏈結點的應用,而不是兩個
可以用來實現雙端佇列;
雙向鍊錶的實現:
1. 首先要重新定義乙個鏈結點類,雙向鍊錶的鏈結點需要儲存左右兩個元素的引用;
2. 雙向鍊錶的實現
雙向鍊錶的使用,從兩端分別進行插入刪除資料
資料結構 雙端鍊錶和雙向鍊錶
雙端鍊錶 一 什麼是雙端鍊錶。鍊錶中儲存著對最後乙個鏈節點引用的鍊錶。二 從頭部進行插入 要對鍊錶進行判斷,如果為空則設定尾節點為新新增的節點。三 從尾部進行插入 如果鍊錶為空,則直接設定頭結點為新新增的節點,否則設定尾節點的後乙個節點為新新增節點。四 從頭部進行刪除 判斷頭結點是否為下乙個結點,如...
資料結構和演算法 雙向鍊錶
初始化 指標域置為空 null 資料域可用可不用 前插法 插入節點插在頭節點之後 為前插法 插入節點的next 頭節點的next 插入節點的prev 頭節點 頭節點的next 插入節點 判斷是否存在下乙個節點 如果 頭節點的next null 說明存在,就需要把下乙個節點的prev指向插入節點 如果...
資料結構與演算法 鍊錶2 雙向鍊錶
雙向鍊錶結點和單向鍊錶結點的區別在於,多了乙個指向前驅的指標。當這個節點是第乙個節點時,前驅指標是乙個空指標。單向鍊錶的結構如下圖1所示 圖1 單向鍊錶結構圖 雙向鍊錶的結構如下圖2所示 圖2 雙向鍊錶結構圖 顯然通過以上2個圖的對比,可以看出鍊錶兩種形式的特點。雙向鍊錶顯然我們在建立的時候需要永久...