下面陣列的聯接元件是從「算法+數據結構=程序」,由尼克勞斯·維爾特,章的摘錄「1.7記錄結構。」:具有偏移
在一個進一步的例子中,我們假設(可能爲了更快地找到它們)將數組a中的某些人連接在一起。鏈接信息由記錄結構的附加組件人表示,其名稱爲鏈接。這些鏈接將記錄鏈接成一個線性鏈,這樣每個人的後繼者和前任都可以很容易找到。這種鏈接技術的有趣特性是鏈可以在每個記錄中存儲的單個數字的基礎上在兩個方向上遍歷。該技術的工作原理如下。
假設鏈的三個連續的成員的指數我 K-1,我ķ,我 K +我。所述ķ個構件的鏈接值被選擇爲我 K + 1 - 我 K-1。遍歷在向前方向上的鏈,我 K + 1從兩個電流索引變量確定X = I K-1,和Y = 1 ķ爲:
我 K + 1 = X + A [Y]。鏈路
而在向後的方向上穿過所述鏈,我一個[Y]。鏈路 -
我 K-1 = X:K-1從X = I K + 1,和Y = 1 ķ所確定
一個例子連結同性別的所有人員在一個表:
Index First Name Sex Link
----- ---------- --- ----
1 Carolyn F 2
2 Chris M 2
3 Tina F 5
4 Robert M 3
5 Jonathan M 3
6 Jennifer F 5
7 Raytheon M 5
8 Mary F 3
9 Anne F 1
10 Mathias M 3
我無法理解鏈接如何工作。假設我們想要以正向穿越鏈條,從開始y = i k = a [1]。由於我們之前沒有i k-1元素,因此x的起始值是多少?我試過從x = 0或x = 1開始,但都導致錯誤的序列。如果我們想要向後移動鏈條怎麼辦?