資料結構基礎 之 迴圈鍊錶

2021-07-05 00:19:51 字數 915 閱讀 8958

迴圈鍊錶是一種首尾相接的鍊錶。

(1)單迴圈鍊錶——在單鏈表中,將終端結點的指標域null改為指向表頭結點或開始結點即可。

(2)多重鏈的迴圈鍊錶——將表中結點鏈在多個環上。

帶頭結點的單迴圈鍊錶

非空表

空表判斷空鍊錶的條件是head==head->next;

僅設尾指標的單迴圈鍊錶

用尾指標rear表示的單迴圈鍊錶對開始結點a1和終端結點an查詢時間都是o(1)。而表的操作常常是在表的首尾位置上進行,因此,實用中多採用尾指標表示單迴圈鍊錶。帶尾指標的單迴圈鍊錶可見下圖。

迴圈鍊錶的特點

迴圈鍊錶的特點是無須增加儲存量,僅對錶的鏈結方式稍作改變,即可使得表處理更加方便靈活。

【例】在鍊錶上實現將兩個線性表(a1,a2,…,an)和(b1,b2,…,bm)連線成乙個線性表(a1,…,an,b1,…bm)的運算。

分析:若在單鏈表或頭指標表示的單迴圈表上做這種鏈結操作,都需要遍歷第乙個鍊錶,找到結點an,然後將結點b1鏈到an的後面,其執行時間是o(n)。若在尾指標表示的單迴圈鍊錶上實現,則只需修改指標,無須遍歷,其執行時間是o(1)。

相應的演算法如下:

linklist connect(linklist a,linklist b)

注:

①迴圈鍊錶中沒有null指標。涉及遍歷操作時,其終止條件就不再是像非迴圈鍊錶那樣判別p或p->next是否為空,而是判別它們是否等於某一指定指標,如頭指標或尾指標等。

②在單鏈表中,從一已知結點出發,只能訪問到該結點及其後續結點,無法找到該結點之前的其它結點。而在單迴圈鍊錶中,從任一結點出發都可訪問到表中所有結點,這一優點使某些運算在單迴圈鍊錶上易於實現。

資料結構之迴圈鍊錶

迴圈鍊錶是資料結構中煉表的一種形式。相對於單向鍊錶,將單向鍊錶的尾結點的指標域指向該單向鍊錶的頭結點,就構成了迴圈鍊錶。可以這麼理解,單向鍊錶就是一張單程火車票,比如你要從北京坐火車去上海,路上經過濟南 南京,此時北京 濟南 南京 上海就構成了單向鍊錶的四個結點,如下圖所示。但是,單向鍊錶是有去無回...

資料結構之迴圈鍊錶

前面學習了鏈式結構鍊錶,鏈式結構鍊錶也有使用的侷限性。比如說我們經常碰到的迴圈關係,最經典的當然是約瑟夫問題了,那麼我們怎麼去解決約瑟夫問題呢?相信你看完本文章就會了,好了言歸正傳,我們生活中經常會遇到迴圈問題,例如,一年的12個月,春夏秋冬交替,這些迴圈關係怎麼在我們的程式體現出來,少廢話,上 第...

資料結構之迴圈鍊錶

首先先了解如何判斷單鏈表中是否有環 環的定義 鍊錶中的尾節點指向了鍊錶中的某個節點。方法一 使用p q兩個指標,p一直往前走,q每次從頭往前走,當p等於q但是p q移動的步數不相等的時候,存在環。方法二 使用p q兩個指標,p每次往前走一步,q每次往前走兩步,當存在p q的時候,存在環。迴圈鍊錶,只...