天天看點

資料結構之雙向連結清單(包含雙向循環連結清單)

雙向(循環)連結清單是線性表的鍊式存儲結構的又一種形式。

在之前已經講述了和。相比于單向連結清單隻能從頭結點出發周遊整個連結清單的局限性,循環連結清單使得可以從任意一個結點周遊整個連結清單。

但是,不管單向連結清單也好,循環連結清單也罷,都隻能從一個方向周遊連結清單,即隻能查找結點的下一個結點(後繼結點),而不能查找結點的上一個結點(前驅結點)。鑒于上述問題,引入了雙向連結清單。由于雙向循環連結清單包含雙向連結清單的所有功能操作。是以,我們隻講述雙向循環連結清單。

與單向連結清單不同,雙向連結清單的結點構造如下圖所示。即一個結點由三個部分組成,資料域DATA,左指針域llink和右指針域rlink。其中,資料域用來存放結點資料資訊,左指針域用來指向前驅結點,右指針域用來指向後繼結點。雙向循環連結清單有一個特性:p->llink->rlink = p->rlink->llink = p。

資料結構之雙向連結清單(包含雙向循環連結清單)

用來表示雙向連結清單結點的代碼如下:

在帶有頭結點的雙向循環連結清單類代碼如下。在代碼示例中,僅介紹了雙向循環連結清單的建立、插入元素、删除元素和列印連結清單的操作。