したがって、コンピューター プログラミングのレッスンの一環として、このアルゴリズムに基づいて、ノードの単一リンク リストを逆にする必要があります。
「リストを順番にたどって、各ノードを削除し、新しい最初のノードとして挿入します。」
私はこれを繰り返し行うことができましたが、教授はこれを再帰的に行うように求めています。再帰を理解するために最善を尽くしていますが、うまく機能していません。
そのため、コーディングを反復から再帰的であると信じているものに変更しました
private void recursiveReverse2(Node p)
{
Node lead = p;
Node tail = p;
if (p == null)
{
return;
}
if (p.next == null)
{
return;
}
current = tail.next;
lead = current.next;
current.next = null;
tail.next = lead;
current.next = head;
head = current;
recursiveReverse2(tail);
}
public void reverse2()
{
toggle(); //swithces sort of list from ascending-descending
recursiveReverse2(head); //head initialized at start of class
}
基本的に、私が実際に行ったことは再帰であるかどうかを尋ねたかったのです。recursiveReverse2()は機能しますが、再帰を実装したかどうかはわかりません。