雙向鏈表相比於單向鏈表,所謂的O(1)是指刪除、插入操作。
單向鏈表要刪除某一節點時,必須要先通過遍歷的方式找到前驅節點(通過待刪除節點序號或按值查找)。若僅僅知道待刪除節點,是不能知道前驅節點的,故單鏈表的增刪操作復雜度為O(n)。 雙鏈表(雙向鏈表)知道要刪除某一節點p時,獲取其前驅節點q的方式為 q = p->prior,不必再進行遍歷。故時間復雜度為O(1)。而若只知道待刪除節點的序號,則依然要按序查找,時間復雜度仍為O(n)。
單、雙鏈表的插入操作,若給定前驅節點,則時間復雜度均為O(1)。否則只能按序或按值查找前驅節點,時間復雜度為O(n)。至於查找,二者的時間復雜度均為O(n)。 對於最基本的CRUD操作,雙鏈表優勢在於刪除給定節點。但其劣勢在於浪費存儲空間(若從工程角度考量,則其維護性和可讀性都更低)。
雙鏈表本身的結構優勢在於,可以O(1)地找到前驅節點,若算法需要對待操作節點的前驅節點做處理,則雙鏈表相比單鏈表有更加便捷的優勢。