teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

tailについて追記

2017/10/03 00:39

投稿

masaya_ohashi
masaya_ohashi

スコア9210

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