[編集]私のコードを修正しました。while(temp!= NULL)であり、while(temp-> next!= NULL)ではありません。間違ったコードを挿入して申し訳ありません。
今日、私はオンラインプログラミングテストに参加しました。インタビュアーはCodilityを使用して、私のコードと他のインタビュイーを評価しました。ある瞬間、リンクリストについての質問がありました。リンクリストにあるアイテムの数を数えようとしています。私はこれを行うための唯一の可能なアプローチ、AFAIKを行いました:
//This is struct declaration
struct SomeStruct
{
int value;
SomeStruct* next;
}
int elementCount(SomeStruct* list)
{
int count = 0;
if(list != NULL)
{
SomeStruct* temp = list;
while(temp != NULL)
{
count++;
temp = temp->next;
}
}
return count;
}
この質問への回答としてこのコードを送信したとき、Codilityは、タスクの実行に時間がかかりすぎるため、このソリューションは間違っていると指摘しました。私の頭とSOのこのスレッドでは、単純な方法ではなく、リンクリストをトラバースせずにサイズを取得する他の方法はありません。
この解決策が間違っていると書かれている場合、Codilityに問題がありますか?または別のアプローチがありますか?
PS:STLの使用を許可されたテスト