回答編集履歴
1
追記
answer
CHANGED
@@ -26,4 +26,9 @@
|
|
26
26
|
```
|
27
27
|
もう一つここの動作も怪しいです。コメントで「実行後 head 自体は変化なく」と言っているように、この関数は実際には分割しません。いくらかのカード分進めたポインターを返すだけで、元も山は元の状態で残ったままです
|
28
28
|
(もう一つ小さなミスとしては引数のnが残ったカードの数ではなく、実際は進めるカードの数になっているということ)。ところがreverse内での実際の使用法を見ると、分割される前提で元の山に積み上げていっているので、どんどんカードの枚数が増えていきます(pileupの実装次第ではループした単方向リストになる)。
|
29
|
-
pileupとsplit以外は与えられてるということなので、実際にsplitするような実装に変えるべきなんでしょう。
|
29
|
+
pileupとsplit以外は与えられてるということなので、実際にsplitするような実装に変えるべきなんでしょう。
|
30
|
+
|
31
|
+
---
|
32
|
+
split関数の理想的な動作としては[1-> 2-> 3-> 4-> 5-> Null]というようなリストが与えられたとき、[1-> Null]と[2-> 3-> 4-> 5-> Null]の二つのリストができる関数です。つまりどこかでnextにNullを代入するはずです。
|
33
|
+
|
34
|
+
コメントのsplit関数については最初のsplit関数と同じ動作です。もしかしたらポインターの働きを勘違いしてるんじゃないでしょうか。
|