インタビューで、単一のリンクされたリストにループがあるかどうかを尋ねられました。私はこのSOを検索し、いくつかの答えを見つけましたインタビュー質問:どのようにリンクリストのループを検出するには?と私は前にそれらの答えを知っていたが、何とか私は友人との長い時間の後の私の討論から私が心に持っていた異なった答えをしたが、答えが正しいかどうか分からなかった。自分で試してみると、期待どおりに動作します。何とか面接官が幸せではない。誰かがこれで間違っていることを明確にすることはできますか?特定の単一リンクリストがループであるかどうかを特定する方法はありますか?
struct node {
int flag;
struct node *next;
}
ここでの私の考えは二つのポインタを使用してvariantlyホップが、単一のポインタを使用し、トラバースしない各ノード例:私だけはどうしたらこれが1ときにフラグ変数を設定されている
node = node->next;
を今まで私がノードを通過し、効率よりも
if (node->flag)
{
return TRUE; // implies list is a loop
}
else{
node->flag = 1;
}
その他の各時間などを確認し、このアプローチでは何が間違っているのですか?
http://stackoverflow.com/questions/34249/best-algorithm-to-test-if-a-linked-list-has-a-cycleと、他のアプローチについてはそこにリンクされている質問を参照してください。 – delnan
@delnan:はい、私はこの質問も行った。私は主にSOのすべての関連する質問をカバーしました。しかし、私の質問は、このアプローチで何が間違っているかを理解することです。 – dicaprio
この種の質問は、あなたが以前にこの種の質問を読んで答えをよく知っている場合にのみ表示されます。私はそれを開発者の熟練度の基準として決して使用しません。 – onemasse