回答編集履歴
1
太字加工
answer
CHANGED
@@ -7,15 +7,15 @@
|
|
7
7
|
次に`head.next = swapPairs(head.next.next)`の再帰呼び出し(**swap2**と名付けます)で
|
8
8
|
head = [3->4]で呼び出すので、nは[4->null]のノードになります。
|
9
9
|
|
10
|
-
swap2内でhead = nullで再帰呼び出しを行うので、swap2のhead.nextにはnullが返ります。
|
10
|
+
**swap2**内でhead = nullで再帰呼び出しを行うので、**swap2**のhead.nextにはnullが返ります。
|
11
|
-
swap2のheadは[3->4]だったので、このnextがnullに書き換えられ、[3->null]になります。
|
11
|
+
**swap2**のheadは[3->4]だったので、このnextがnullに書き換えられ、[3->null]になります。
|
12
|
-
そしてn.nextにheadが入るのですが、swap2ではnは[4->null],headは[3->4]改め[3->null]なので、
|
12
|
+
そしてn.nextにheadが入るのですが、**swap2**ではnは[4->null],headは[3->4]改め[3->null]なので、
|
13
13
|
nが[4->3]となります。たぶんここまでは質問者様も正しく理解されていると思います。
|
14
14
|
|
15
|
-
この次は、swap2のnである[4->3]が呼び出し元に帰ります。
|
15
|
+
この次は、**swap2**のnである[4->3]が呼び出し元に帰ります。
|
16
|
-
呼び出し元はswap1のhead.nextに代入するところで、headは[1->2]でした。
|
16
|
+
呼び出し元は**swap1**のhead.nextに代入するところで、headは[1->2]でした。
|
17
17
|
このnextが[4->3]のノードに書き換わるので、headは[1->4]になります。
|
18
|
-
最後にswap1のnのnextにheadが入ります。nが[2->3],headが[1->4]となるので、
|
18
|
+
最後に**swap1**のnのnextにheadが入ります。nが[2->3],headが[1->4]となるので、
|
19
19
|
nが[2->1]になります。
|
20
20
|
|
21
21
|
全部繋げると、
|