1. 程式人生 > >迴圈列表和雙向列表【轉】

迴圈列表和雙向列表【轉】

本文圍繞以下兩個部分展開: 一、迴圈連結串列(circular linked list) 二、雙向連結串列(double linked list) 一、迴圈連結串列(circular linked list)          1. 概念          將單鏈表中終端結點的指標端由空指標改為指向頭結點,就使整個單鏈表形成一個環,這種頭尾相接的單鏈表稱為單迴圈連結串列,簡稱迴圈連結串列。   

        2. 與單鏈表比較          (1)單鏈表,每個元素只儲存了向後的指標,到了尾標誌就停止了向後鏈的操作。這樣,當中某一結點就無法找到它的前驅結點。          迴圈連結串列可以從當中一個結點出發,訪問到連結串列的全部結點。          (2)

迴圈的判斷條件上有差別:單鏈表:判斷p->next是否為空;迴圈連結串列:判斷p->next是否等於頭結點。          3. 改造:不用頭指標,用尾指標好。   

        (1)用頭指標:可以用O(1)的時間訪問開始結點,但訪問終端結點由於需要將連結串列全部掃描一遍,因此需要O(n)的時間。          而用尾指標訪問開始結點和終端結點都用O(1)的時間。          (2)要將兩個迴圈連結串列合併為一個表時,有了尾指標就非常簡單了。   

  二、雙向連結串列(double linked list)          1. 概念          雙向連結串列是在單鏈表的每個結點中,再設定一個指向其前驅結點的指標域。          2. 雙向連結串列儲存結構

   

        3. 插入   

        4. 刪除   

           5. 雙向迴圈連結串列(雙向連結串列帶有迴圈)   

整理時重點參考:《大話資料結構》程傑著