この解答例はChatGPTによって生成されています,正しいかは自己判断で。

BFE.devでのAI解答例 - JavaScript コーディング問題
47. linked listを逆順にする

解答例:

再起を使わずに解く場合:

function reverseLinkedList(head: Node): Node {
  // 空のリストの場合
  if (!head) {
    return null;
  }
  let prev = null;
  let curr = head;
  while (curr) {
    const next = curr.next;
    curr.next = prev;
    prev = curr;
    curr = next;
  }
  return prev;
}

再起を使って解く場合:

function reverseLinkedList(head: Node): Node {
  // 空のリストの場合
  if (!head || !head.next) {
    return head;
  }
  const reversedHead = reverseLinkedList(head.next);
  head.next.next = head; // 現在のノードを反転したリストの最後に挿入
  head.next = null; // 現在のノードのnextをnullに設定
  return reversedHead;
}

再起を使った方がコードが短く、理解しやすい可能性があります。しかし、再起を使用するとスタックオーバーフローのリスクがありますので、入力が非常に大きい場合には注意が必要です。