二重リンクリストは、各ノードがリスト内と次のvalue
両方への「リンク」と同様に持つデータ構造です。たとえば、値が12、99、および37の次のノードを考えます。previous
nodes
ここで、値12および99のnext
ノードは、値99および37のそれぞれのノードを指します。値が37のnext
ノードは、リスト内の最後のノードであるため、ポインターを持ちません。同様に、値99および37のprevious
ノードはそれぞれのノード12および99を指しますが、12にはありませんprevious
指しますが、リストの最初のノードであるためポインター。
セットアップ
実際には、ノードの「リンク」は、メモリ内の前および次のノードの場所へのポインターとして実装されます。私たちの目的では、「メモリ」はノードの配列であり、ノードの場所は配列内のインデックスになります。ノードは、形式の3タプルと考えることができます( prev value next )
。上記の例は、次のようになります。
ただし、代わりに次のようになります。
任意のノードから開始して、previous
リンク(赤い矢印の原点として表示)をたどってその前のノードに移動し、next
リンク(緑の矢印)を使用して後続のノードを検索し、すべてのノードの値を順番に取得できます。[12, 99, 37]
。
上記の最初の図は、配列でとして表すことができます[[null, 12, 1], [0, 99, 2], [1, 37, null]]
。次に、2番目はになります[[2, 99, 1], [0, 37, null], [null, 12, 0]]
。
チャレンジ
ノードの配列とノードのインデックスを入力として受け取り、同じ二重リンクリスト内のノードの値をリスト順に返すプログラムを作成します。
合併症
「メモリ」には、常に1つのリストのノードが含まれているとは限りません。複数のリストが含まれる場合があります。
上記の配列には、利便性のために色分けされた3つの二重リンクリストが含まれています。
インデックスのノードは
7
、10
、1
、4
、3
、12
(のみ示すnext
煩雑さを軽減するためのリンク。クリックすると拡大します):この配列とこれらのインデックスのいずれかが与えられると、プログラムは値を順番に返す必要があります
[0, 1, 1, 2, 3, 5, 8]
。インデックスのノード
9
:インデックスを指定する
9
と、プログラムが返され[99]
ます。インデックスのノード
11
、8
、0
、6
、2
:これらのインデックスのいずれかを指定すると、返されるはずです
[2, 3, 5, 7, 11]
ます。
ルール
入力
あなたのプログラムは入力として受け取ります:
𝒏ノードのリスト(上記の3タプル)、ここで1≤𝒏≤1,000、任意の便利な形式(配列の配列、長さ3𝒏の整数の「フラット」配列など)
:3タプル要素は、任意の順序であってもよく
( prev value next )
、( next prev value )
各ノードについて、等、prev
とnext
なりますnull
(または別の便利な値、例えば-1
)、二重にリンクされたリストの最初または最後のノード、または有効なインデックスを示します便利なように、0ベースまたは1ベースのリスト。value
符号付き32ビット整数または言語がサポートする最大の整数型のいずれか小さい方になります。リスト内のノードのインデックス𝒑(1)。指定されたノードは、二重リンクリストの最初のノード、最後のノード、中間ノード、または唯一のノードです。
入力リスト(1)には病理学的データ(たとえば、サイクル、他の複数のノードが指すノードなど)が含まれる場合がありますが、入力インデックス(2)は常に、単一の整形式出力が可能なノードを指します推論された。
出力
プログラムは、インデックスatのノードがメンバーになっている二重リンクリストのノードの値をリスト順に出力する必要があります。出力は任意の便利な形式にすることができますが、そのデータにはノードのみが含まれている必要がありますvalue
。
勝ち
これはcode-golfです。バイト単位の最短回答が優先されます。標準の抜け穴が適用されます。
テストケース
以下に、各テストケースの形式を示します。
X)
prev value next, prev value next, ...
index
value value value ...
...ここでX
、テストケースを識別するための文字、2行目は入力リスト、3行目は0から始まる入力インデックス、4行目は出力です。
A) null 12 1, 0 99 2, 1 37 null
1
12 99 37
B) 2 99 1, 0 37 null, null 12 0
1
12 99 37
C) 8 5 6, 10 1 4, 6 11 null, 4 3 12, 1 2 3, 12 8 null, 0 7 2, null 0 10, 11 3 0, null 99 null, 7 1 1, null 2 8, 3 5 5
4
0 1 1 2 3 5 8
D) 8 5 6, 10 1 4, 6 11 null, 4 3 12, 1 2 3, 12 8 null, 0 7 2, null 0 10, 11 3 0, null 99 null, 7 1 1, null 2 8, 3 5 5
0
2 3 5 7 11
E) 8 5 6, 10 1 4, 6 11 null, 4 3 12, 1 2 3, 12 8 null, 0 7 2, null 0 10, 11 3 0, null 99 null, 7 1 1, null 2 8, 3 5 5
9
99
F) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
18
80 80 67 71
G) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
8
1 -1 1 -1 1 -1 1
H) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
4
1 3 6 10 15 21
I) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
14
3 1 4 1 5 9 2 6 5 3
J) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
17
8 6 7 5 3 0 9
K) 4 11 0, null 22 3, null 33 3, 1 44 4, 3 55 null, 7 66 7, 6 77 6
3
22 44 55
L) null -123 null
0
-123