私が読んだ多くの例では、単純な getListLength() 関数は次のようになります。
int getListLength(struct node *head)
{
struct node *temp = head;
int iCount = 0;
while (temp)
{
++iCount;
temp = temp->next;
}
return iCount;
}
不要だと思われるのは、渡されたパラメーターをコピーするローカル ポインター (この場合は *temp) の宣言です。私の記憶が正しければ、渡されたパラメーターは独自のコピーを取得します。したがって、*head 自体がコピーであるという理由だけで、*head をコピーするローカル ポインターは必要ありませんよね? つまり、*temp ポインターを破棄して、代わりに head をどこでも使用するのが正しいでしょうか?