線性表 鏈式儲存結構之 迴圈鍊錶

2021-06-22 02:38:59 字數 1104 閱讀 9077

迴圈鍊錶

(circular linked list)

是一種首尾相接的單鏈表。

(1)單迴圈鍊錶

——在單鏈表中,將終端結點的指標域null改為指向表頭結點或開始結點即可。

(2)多重鏈的迴圈鍊錶

——將表中結點鏈在多個環上。

單迴圈煉表示意圖:

注意:迴圈鍊錶的操作和線性表基本一致,只是

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

用尾指標rear表示的單迴圈鍊錶對

開始結點a1

和終端結點an

查詢時間都是o(1)。

而表的操作常常是在表的首尾位置上進行,因此,實用中多採用尾指標表示單迴圈鍊錶。

帶尾指標的單迴圈鍊錶可見下圖:

注意:

判斷空鍊錶的條件為rear==rear->next;

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

【例】在鍊錶上實現將兩個線性表(a1,a

2,…,a

n)和(b1,b

2,…,b

m)連線成乙個線性表(a

1,…,an,b

1,…b

m)的運算。

分析:若在單鏈表或頭指標表示的單迴圈表上做這種鏈結操作,都需要遍歷第乙個鍊錶,找到結點a

n,然後將結點b

1鏈到a

n的後面,其執行時間是o(n)。若在尾指標表示的單迴圈鍊錶上實現,則只需修改指標,無須遍歷,其執行時間是o(1)。

兩個單迴圈鍊錶的鏈結操作示意圖

相應的演算法如下:

linklist connect( linklist a,  linklist b )

注意:

資料結構 線性表鏈式儲存結構 迴圈鍊錶

巨集定義 define failed 1 define success 0 typedef struct cirslinknode cirslinknode typedef struct cirdlinknode cirdlinknode 帶頭結點的迴圈單鏈表,統計其data域值為x的結點個數 in...

線性表 鏈式儲存結構 雙向鍊錶

雙向鍊錶結點結構 既然單鏈表可以有迴圈鍊錶,那麼雙向鍊錶當然也可以有。由於這是雙向鍊錶,那麼對於鍊錶中的某乙個結點p,它的後繼結點的前驅結點是它本身。實現 s next p s prior p prior p prior next s p prior s 關鍵在於交換的過程中不要出現矛盾,例如第四步...

線性表鏈式儲存結構

include include 線性表鏈式儲存結構 typedef struct lnodelnode,linklist int initlist linklist l 初始化 int endinsert linklist l,int e p next s return 1 末尾插入元素 int g...