回答編集履歴
1
tailについて追記
test
CHANGED
@@ -22,6 +22,8 @@
|
|
22
22
|
|
23
23
|
```JavaScript
|
24
24
|
|
25
|
+
|
26
|
+
|
25
27
|
var a = {value:1};
|
26
28
|
|
27
29
|
var b = {value:5};
|
@@ -36,26 +38,20 @@
|
|
36
38
|
|
37
39
|
|
38
40
|
|
39
|
-
|
41
|
+
function tail (o) {
|
40
42
|
|
41
|
-
for(;o.next;o
|
43
|
+
for (; o.next; o=o.next); // aのnextはb、bのnextはc、cのnextはnullなのでそこで処理が止まる
|
42
44
|
|
43
|
-
|
45
|
+
return o; // oにはcが入っている
|
44
46
|
|
45
47
|
}
|
46
48
|
|
47
49
|
|
48
50
|
|
49
|
-
o = a;
|
50
|
-
|
51
|
-
|
51
|
+
var t = tail(a); // aから繋がりを探していき、nextがnullなオブジェクト、つまりcが返される
|
52
|
-
|
53
|
-
console.log(o.value);
|
54
|
-
|
55
|
-
}
|
56
52
|
|
57
53
|
```
|
58
54
|
|
59
55
|
|
60
56
|
|
61
|
-
上記の例において、`c.next`に`a`を入れると**無限循環リスト**が出来上がります。永遠にnextを回り続けるリストなので、強制的に終了させるまでずっとループします。
|
57
|
+
ちなみに上記の例において、`c.next`に`a`を入れると**無限循環リスト**が出来上がります。永遠にnextを回り続けるリストなので、強制的に終了させるまでずっとループします。
|