JavaScript勉強中の者です。
[2,10,34,45,67,356]という片方向の連結リストを受け取って「356,67,45,34,10,2」と出力するreverse関数を次のように書きました。これはこれでうまくいくのですが再帰だともっと行数が減らせるかなと思っています。
JavaScript
1function findMergeNode(headA,headB){ 2 console.log(reverse(headA)); 3} 4function reverse(head) { 5 let reverse = head; 6 head = head.next; 7 reverse.next = null; 8 while(head !== null) { 9 let temp = head; 10 head = head.next; 11 temp.next = reverse; 12 reverse = temp; 13 } 14 head = reverse; 15 return head; 16}
私なりに再帰で書く方法を考えてみましたが
JavaScript
1function findMergeNode(headA,headB){ 2 console.log(reverse(headA,null, null)); 3} 4function reverse(head, next, start) { 5 if(head === null) return start; 6 let temp = head; 7 temp.next = next; 8 return reverse(head.next, temp, temp); 9}
こう書くと{ data: 2, next: null }
と帰ってきてしまいます(逆順にできていない)。
伝えるべき情報が抜け落ちていたら申し訳ありません。
回答2件
あなたの回答
tips
プレビュー