回答編集履歴

1

tailについて追記

2017/10/03 00:39

投稿

masaya_ohashi
masaya_ohashi

スコア9206

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
- var o = a; // ループ用変数oに始まりのaを入れる
41
+ function tail (o) {
40
42
 
41
- for(;o.next;o = o.next) { // aのnextはb、bのnextはc、cのnextはnull
43
+ for (; o.next; o=o.next); // aのnextはb、bのnextはc、cのnextはnullなのでそこで処理が止まる
42
44
 
43
- console.log(o.value); // 1,5の順で出力される(cはnextnullなので処理されな)
45
+ return o; // oにはcが入って
44
46
 
45
47
  }
46
48
 
47
49
 
48
50
 
49
- o = a;
50
-
51
- for(;o!=null;o = o.next) { // この条件cまで全部処理される
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を回り続けるリストなので、強制的に終了させるまでずっとループします。