Warum ist das löschen in einer einfach verkettete Liste O(1)?

Ich nicht ruhig verstehen, warum das löschen am Ende eine einfach verkettete Liste geht in O(1) Zeit, als die wikipedia-Artikel sagt.

Eine einfach verkettete Liste besteht aus Knoten. Ein Knoten enthält eine Art von Daten, und eine Referenz auf den nächsten Knoten. Die Referenz der Letzte Knoten in der verketteten Liste, ist null.

--------------    --------------           --------------
| data | ref | -> | data | ref | -> ... -> | data | ref |
--------------    --------------           --------------

Ich zwar entfernen kann, der den letzten Knoten in O(1). Aber in diesem Fall nicht die Referenz des neu letzten Knoten der vorherigen, auf null, da es immer noch enthält die Referenz auf die gelöschte letzten Knoten. So Frage ich mich, tun, Sie vernachlässigen, dass in der Laufzeit-Analyse? Oder ist es consired dass Sie nicht haben, um das zu ändern, da sich der Verweis, gut, nur Punkte, nichts, und so gesehen wird als null?

Weil wenn wäre es nicht vernachlässigt werden, würde ich argumentieren, dass mit dem löschen ist O(n). Da muss man iteriert über die gesamte Liste zu bekommen, um den neu letzten Knoten und setzen Sie den Verweis auch auf null. Nur in einer doppelt verketteten Liste, es wäre wirklich O(1).

- - edit - -
Vielleicht ist diese Sichtweise gibt einige mehr ausräumen. Aber ich finden Sie unter "löschen eines Knotens" als erfolgreich löschen der Knoten selbst und der Einstellung der vorherigen Verweis auf null.

InformationsquelleAutor der Frage WG- | 2012-12-27

Schreibe einen Kommentar