5

単一リンクリスト(SLL)でループが発生する場合があります。
リスト内のループを削除するには、最初にSLLでループを検出してから、ループを削除する必要があります。

擬似コードを使用してSLLのループを削除する方法を教えてもらえますか?
3つのポインターを使用してそれを行うことはできますか?
タスクを実行するための代替手段はありますか?

4

1 に答える 1

1

あなたが求めるものには多くの解決策があります。最も簡単で非効率的な方法の1つは、ヘッドノードを記憶しながらリストを逆にすることです。ヘッドノードに戻ると、ループが存在することがわかります。

確認するもう1つの方法は、リスト内の各ノードのintを含む配列を作成することです。ノードにアクセスするたびに、配列内の対応する値をインクリメントします。次に、配列内の値に複数の値があるかどうかを確認し、それを追加の反復が開始される場所と比較するだけです。このメソッドは、完全なループと小さなループを検出します。うまくいけば、これがお役に立てば幸いです。

于 2013-03-16T04:53:54.080 に答える