迴圈鍊錶是資料結構中煉表的一種形式。相對於單向鍊錶,將單向鍊錶的尾結點的指標域指向該單向鍊錶的頭結點,就構成了迴圈鍊錶。
可以這麼理解,單向鍊錶就是一張單程火車票,比如你要從北京坐火車去上海,路上經過濟南、南京,此時北京、濟南、南京、上海就構成了單向鍊錶的四個結點,如下圖所示。
但是,單向鍊錶是有去無回的,也就是從北京去了上海,那你就永遠別回來了。那如果想回北京怎麼辦?而且是想舒服地回去(坐飛機回去),此時就去買張上海到北京的機票,也就是將上海和北京直接連起來,起點是上海,終點是北京。這也就構成了本文所說的迴圈鍊錶。如下圖所示。
迴圈鍊錶包括兩種形式:一種為不帶頭結點的迴圈鍊錶,即任何乙個結點都可以當作頭結點,如上圖所示;另一種為帶頭結點的迴圈鍊錶,如下圖所示。一般來說,該頭結點內容或者為空,或者可以記錄鍊錶長度等資訊。
由於在資料結構之鍊錶單向操作總結一文中已經詳細總結了單向鍊錶的各種操作,且迴圈鍊錶也比較好理解,在此就不寫過多的示例,只寫乙個在迴圈鍊錶中查詢結點的演算法來拋磚引玉吧。
public node searchitem(object data)
p = p.getnext();
} return null;
}
與單向鍊錶比較,迴圈鍊錶可以從任意結點出發遍歷整個鍊錶,這也是迴圈鍊錶的優勢所在。 資料結構之迴圈鍊錶
前面學習了鏈式結構鍊錶,鏈式結構鍊錶也有使用的侷限性。比如說我們經常碰到的迴圈關係,最經典的當然是約瑟夫問題了,那麼我們怎麼去解決約瑟夫問題呢?相信你看完本文章就會了,好了言歸正傳,我們生活中經常會遇到迴圈問題,例如,一年的12個月,春夏秋冬交替,這些迴圈關係怎麼在我們的程式體現出來,少廢話,上 第...
資料結構之迴圈鍊錶
首先先了解如何判斷單鏈表中是否有環 環的定義 鍊錶中的尾節點指向了鍊錶中的某個節點。方法一 使用p q兩個指標,p一直往前走,q每次從頭往前走,當p等於q但是p q移動的步數不相等的時候,存在環。方法二 使用p q兩個指標,p每次往前走一步,q每次往前走兩步,當存在p q的時候,存在環。迴圈鍊錶,只...
資料結構之 迴圈鍊錶
迴圈鍊錶是另一種形式的鏈式存貯結構。它的特點是表中最後乙個結點的指標域指向頭結點,整個鍊錶形成乙個環。分類 1 單迴圈鍊錶 在單鏈表中,將終端結點的指標域null改為指向表頭結點或開始結點即可。2 多重鏈的迴圈鍊錶 將表中結點鏈在多個環上。空鏈判斷 判斷空鍊錶的條件是 head head next ...