Gemäß Wikipedia article on linked lists wird das Einfügen in der Mitte einer verknüpften Liste als O (1) betrachtet. Ich würde denken, es wäre O (n). Müsstest du nicht den Knoten finden, der sich am Ende der Liste befinden könnte?Warum wird in der Mitte einer verknüpften Liste O (1) eingefügt?
Berücksichtigt diese Analyse nicht das Finden der Knotenoperation (obwohl es erforderlich ist) und nur die Einfügung selbst?
EDIT:
verlinkte Listen haben mehrere Vorteile gegenüber Arrays. Das Einfügen eines Elements an einem bestimmten Punkt einer Liste ist eine Operation mit konstanter Zeit, während das Einfügen in ein Array möglicherweise die Hälfte der Elemente oder mehr erfordert.
Die obige Aussage ist ein wenig irreführend für mich. Korrigieren Sie mich, wenn ich falsch liege, aber ich denke, sollte die Schlussfolgerung sein:
Arrays:
- Finden der Punkt Einfügen/Löschen O (1)
- Durchführen der Einfügen/Löschen O (n)
verlinkte Listen:
- den Punkt Einfügen/Löschen O (n)
- Durchführen der Einfügen/Löschen O (1)
Ich denke, das einzige Mal, Sie würden nicht finden die Position ist, wenn Sie einige Finding gehalten Art von Zeiger darauf (wie in einigen Fällen mit dem Kopf und dem Schwanz). Wir können also nicht einfach sagen, dass verknüpfte Listen immer Arrays für Einfüge-/Löschoptionen übertreffen.
Nicht * ziemlich * ein Duplikat. Die vorherige Frage konzentrierte sich auf dynamische Arrays und verwendete verkettete Listen als Vergleichsgrundlage. –