この質問はおそらく最も一般的な質問の 1 つであり、解決策を探しているときに多くの質問を見つけましたが、以下のコードが私に最も適していました。
実際に行うことは、別のリストを作成し、古いリストを反復処理して、常に新しいリストの先頭に要素を追加することです。
Node *reverseList(Node *oldList)
{
Node* newList=NULL;
while(oldList!=NULL)
{
Node *temp=oldList;
oldList=oldList->next;
temp->next=newList;
newList=temp;
}
return newList;
}
ただし、このコードを見ずにこのアイデアを再実装することにしたとき、の場所を変更し、のoldList=oldList->next;
後に置きました。newList=temp.
私の質問は、それは本当に違いを生むのでしょうか? 結局のところ、oldList を反復処理しているため、理由を理解できませんでした。*temp宣言の直後に実行する必要があるのはなぜですか?