回答編集履歴
1
tailについて追記
answer
CHANGED
@@ -10,6 +10,7 @@
|
|
10
10
|
# 2) for文について
|
11
11
|
リンクリストというのは、「次のオブジェクトへの参照を持っているオブジェクトの一連の繋がり」です。
|
12
12
|
```JavaScript
|
13
|
+
|
13
14
|
var a = {value:1};
|
14
15
|
var b = {value:5};
|
15
16
|
var c = {value:10};
|
@@ -17,15 +18,12 @@
|
|
17
18
|
b.next = c; // bのnextにcを入れる
|
18
19
|
c.next = null; // cで終わりにするためnextはnullとする
|
19
20
|
|
20
|
-
|
21
|
+
function tail (o) {
|
21
|
-
for(;o.next;
|
22
|
+
for (; o.next; o=o.next); // aのnextはb、bのnextはc、cのnextはnullなのでそこで処理が止まる
|
22
|
-
|
23
|
+
return o; // oにはcが入っている
|
23
24
|
}
|
24
25
|
|
25
|
-
o = a;
|
26
|
-
|
26
|
+
var t = tail(a); // aから繋がりを探していき、nextがnullなオブジェクト、つまりcが返される
|
27
|
-
console.log(o.value);
|
28
|
-
}
|
29
27
|
```
|
30
28
|
|
31
|
-
上記の例において、`c.next`に`a`を入れると**無限循環リスト**が出来上がります。永遠にnextを回り続けるリストなので、強制的に終了させるまでずっとループします。
|
29
|
+
ちなみに上記の例において、`c.next`に`a`を入れると**無限循環リスト**が出来上がります。永遠にnextを回り続けるリストなので、強制的に終了させるまでずっとループします。
|