私はドイツのコンピュータサイエンスの学生です。私の教授は、以下の質問を使用して考えました。O(1)の複雑さを持つ単一のリンクリストの1つの要素を削除するアルゴリズム
'(最後のノードではない)単一リンクリストのノードへの参照が与えられています。整合性を維持しながらO(1)の複雑さを持つリストからこの要素を削除するアルゴリズムを提供する '。
私はこれについて考えましたが、そのようなアルゴリズムはないと確信しています。 1つのリンクされたリストであるため、削除するノードに到達するまで、リスト内のすべてのノードをループする必要があります。削除する前にノードのnext-Pointerを変更する必要があるからです。それはO(n)の複雑さをもたらすでしょう。
何か不足していますか?
ああ、それを得ました。ありがとう:) –
ジョーンが説明したように、これがうまくいくためにはノード構造をプライベートにする必要があります。ノード自体への参照を保持する必要はありません。さもなければ、コンシューマには古いtoDelete.nextオブジェクトへの無効な参照が残ってしまいます(たとえば、C++でノード構造を削除した場合や、最高で無効なノードオブジェクトの場合)。 –
これは本当に単独でリンクされたリストから要素を削除するための 'アルゴリズム'ではありませんか?これは、リストから要素を削除する標準的な方法です。 – Dinuk