私は自分自身の(可能な限り標準に近い)単一のリンクリストの実装を書き込もうとしています。しかし、私は人々がそのようなリストに何時の複雑さを期待するのか疑問に思っていますか?
特に挿入するために、私はそれをどのように実装すべきか疑問に思っています。私はインターネット上のいくつかの場所を読みました。挿入はO(1)であると言う人もいれば、O(n)と言う人もいます。すべてが二重リンクリストがO(1)であることに同意しています。しかし、O(1)は単一のリンクリストにも当てはまると思いますか?
前のノードを知っている限り、前のノードが新しい新しいノードを指すようにするだけで、新しいノードは前のノードが最初に指していた場所を指します。
そうは言っても、人々はどのようinsert
に行動することを期待しているのだろうか?通常、指定されたイテレータの前に要素を挿入します。ただし、単一のリンクリストではそうするのは困難です(O(n)
前の要素を取得してから上記のメソッドを使用するには、時間をかける必要があります)。そのようなリストではinsert
、現在のイテレータの背後にアイテムを配置するのが一般的ですか?または-おそらくより良い-これには別の一般的な機能がありますか?