迴圈鍊錶不同於單鏈表的是在迴圈鍊錶中最後乙個結點的指標不為null,而是指向頭結點,從而整個鍊錶形成乙個環。
在迴圈單鏈表中,表尾結點*r的next域指向l,故表中沒有指標域為null的結點,因此,迴圈單鏈表的判空條件不是頭結點的指標是否為空,而是它是否等於頭結點。
迴圈單鏈表的插入,刪除演算法與單鏈表的類似,不同的是當操作的結點在表尾部的時候,則執行不同的操作,以讓單鏈表繼續保持迴圈的性質。此外,由於迴圈單鏈表是乙個「環」,因此在表中任何乙個位置上的插入和刪除操作都是等價的,可省去表尾元素判斷的步驟。
單鏈表中只能從表頭結點開始往後順序遍歷整個鍊錶,而迴圈鍊錶可以從表中的任意乙個結點開始遍歷整個鍊錶。有時候對單鏈表常進行的操作是在表頭或者表尾,此時對迴圈單鏈表不設頭指標而僅僅設尾指標,以提高操作效率。因為,若設的是頭指標,對錶尾進行操作需要o(n)的之間複雜度,而設尾指標的r時候,r->next即為頭指標,對於表頭與表尾進行操作需要o(1)的時間複雜度。
由迴圈單鏈表的定義類推出迴圈雙鏈表。不同的是在迴圈雙鏈表中,頭結點的prior指標還要指向表尾結點。在迴圈雙鏈表l中,某結點*p為尾結點時,p->next == l;當迴圈雙鏈表為空表時,其頭結點的prior域和next域都等於l。
線性表之鏈式儲存 單向迴圈鍊錶
單向迴圈線性表 也是通過結點的形式在儲存器中進行儲存,結點包括資料域和指標域,邏輯上相鄰的兩個結點在物理上不一定相鄰,單向迴圈鏈式儲存的線性表,定義了乙個唯一的頭結點,頭結點的資料域是儲存資料的,指標域next指標指向下乙個結點,也就是開始結點,定義了乙個尾結點,尾結點的next指向頭結點,資料域是...
線性表 鏈式儲存結構之 迴圈鍊錶
迴圈鍊錶 circular linked list 是一種首尾相接的單鏈表。1 單迴圈鍊錶 在單鏈表中,將終端結點的指標域null改為指向表頭結點或開始結點即可。2 多重鏈的迴圈鍊錶 將表中結點鏈在多個環上。單迴圈煉表示意圖 注意 迴圈鍊錶的操作和線性表基本一致,只是 判斷空鍊錶的條件是head h...
線性表的鏈式儲存結構 迴圈鍊錶 雙向鍊錶
一 迴圈鍊錶 1 尾指標的後繼就是頭節點,每乙個指標都含有前驅指標和後繼指標。2 查詢終端節點和尾節點的時間複雜度是o 1 3 易錯點 1 帶頭節點的雙鏈表l為空表是應滿足 l next null 2 帶有頭節點的迴圈單鏈表l,成為空表時有表頭節點的指標域next和l的值相等 3 長度為n的迴圈單鏈...