リンクリスト内にループが存在する可能性があります。リンクされたリスト内でループが発生する場所を特定する方法があります。リンクリスト内でループが発生する場所を特定する方法
答えて
ループがある場合は、もはやリンクされたリストではありません。有向グラフです。ループはサイクルと呼ばれます。
グラフでサイクルを見つける1つの方法は、リストを反復して各項目に印を付けることです。既にマークされているアイテムが見つかった場合は、サイクルが見つかりました。
リンクされたリストにループがあるかどうかは、ノードへの参照(たとえば、リストの先頭にあるもの)を保存し、リストを反復処理することで確認できます。ある時点でリストの終わり(ヌル値)に達すると、ループはありません。しかし、以前に保存されていた同じノードを再び見つけた場合、そのリストは循環的であることがわかります。いずれにしても、反復を停止します。
Node
秒のリンクリストが円形である場合たとえば、Javaでこのメソッドはあなたを教えてくれます:で、任意のループを見つけるため
一般的な解決のために:
public boolean isCircular(Node list) {
Node current = list;
while (current != null) {
if (current.next == list)
return true;
current = current.next;
}
return false;
}
EDITリンクされたリストは、Floyd's cycle-finding algorithm(別名「カメとハレ」アルゴリズム)について読んでください。これまでのpostには、Javaの優れた実装があります。
これは任意のポイント間で形成されたループを検出しません(たとえば、ノード6がノード4にループバックします)。リスト内のすべてのノードに対してこの同じメソッドを呼び出す必要があります。これは、安全に繰り返すことができないと考えると難しいです。 – Numeron
@Numeronあなたは正しいです。そのためには、訪問されたすべてのノードを別々のデータ構造(たとえば、セット)に格納し、トラバースされた各ノードについて、すでに訪問したかどうかを確認する必要があります。 –
- 1. preg_matchが発生した場所を特定します
- 2. 特定の単一リンクリストがループであるかどうかを特定する方法はありますか?
- 3. foursquareがユーザーの場所を特定する方法は?
- 4. cocos2dの特定の場所でオブジェクトを移動する方法
- 5. 特定の場所にプログラムでフィールドバリデーターを配置する方法
- 6. 内装ページの特定の場所にナビゲーションボタンをアニメーション化する方法
- 7. HTMLページの特定の場所を参照する方法は?
- 8. PHP、特定の場所にエラーを配置する方法
- 9. ページ内の特定の場所をクリックしてシミュレーションする
- 10. HTML5ジオロケーション - 特定のエリア内の場所を検出する
- 11. Googleマップ - 場所を特定するユーザー
- 12. タイプが定義されている場所を特定する
- 13. 場所を取得するときにnullPointerExceptionが発生する
- 14. ボイスレコーダーに特定の場所を与える方法
- 15. ユーザーの場所を特定する最適な方法は何ですか?
- 16. スクリプト内の特定の場所にジャンプする
- 17. 特定の場所
- 18. 地図上の特定の場所に地図を設定する方法
- 19. Yahoo天気の特定の米国緯度/経度の場所でエラーが発生する
- 20. Cの特定の場所でリストボックスからアイテムを削除する方法
- 21. Python:Pythonの特定の場所で画面をクリックする方法MAC OS
- 22. App Inventorでファイルを特定の場所に送信する方法
- 23. Cの特定の場所にあるテキストボックスから別の場所に単語をドラッグアンドドロップする方法#
- 24. Rエラーが発生した場所を見つける方法は?
- 25. リンクリスト内のノードを切り替える際に問題が発生するjava
- 26. to_number()で例外が発生する行を特定する
- 27. Symfonyで定数を定義する場所と方法は?
- 28. whileループ内のPerl bashコマンドでナンセンスが発生する
- 29. リンクリストの行を変更すると、エラーが発生する
- 30. 無限ループ内の特定のポイントに戻る方法
コードを投稿できますか?もっと慎重に説明しますか? – andersoj