我試圖寫我自己的(儘可能接近標準)單鏈表實現。不過,我想知道人們對這樣的列表期望的時間複雜程度?單鏈表和時間複雜性
特別是對於插入我想知道我應該如何實現它。我讀過互聯網上的一些地方,有人說插入是O(1),而另外一些人說O(n) - 都同意雙鏈表是O(1)。但是我認爲O(1)也適用於單鏈表?
只要你知道前面的節點,你就讓前面的節點指向新的新節點,新節點將指向前面的節點最初指向的地方。
這就是說,這讓我想知道人們如何期待insert
的行爲?通常它插入給定迭代器之前的元素。但是,對於單鏈表來說,很難做到這一點(必須經過O(n)
才能獲得前面的元素&,然後使用上面的方法)。在這樣的列表中將insert
放置在當前迭代器的後面是否很常見?或者 - 可能更好 - 是否有另一個共同的功能呢?
在末尾插入和開始通常是'O(1)';在中間是'O(n)'。也許你的迭代器可以跟蹤鏈表中的前一個元素。 – irrelephant
[stl list - complexity]可能的重複(http://stackoverflow.com/questions/3191790/stl-list-complexity) – erisco
@erisco我特別要求的地方'std :: list'不能是與'std :: forward_list'相同 – paul23