Heim  >  Artikel  >  Was sind die Unterschiede zwischen verknüpften Listen und Arrays?

Was sind die Unterschiede zwischen verknüpften Listen und Arrays?

hzc
hzcOriginal
2020-06-24 13:31:492742Durchsuche

Was sind die Unterschiede zwischen verknüpften Listen und Arrays?

Das Array ist eine lineare Struktur und kann direkt indiziert werden, dh um das i-te Element zu erhalten, reicht ein [i]. Eine verknüpfte Liste ist ebenfalls eine lineare Struktur. Um das i-te Element zu erhalten, müssen Sie es nur i-mal mit einem Zeiger durchlaufen. Es scheint, dass verknüpfte Listen problematischer und weniger effizient sind als Arrays.

Wenn man über einige der subtilen Unterschiede zwischen diesen Ähnlichkeiten nachdenkt, kommen ihre wahren Unterschiede nach und nach zum Vorschein: Warum ist die Effizienz verknüpfter Listen geringer als die von Arrays? Beginnen wir mit der Initialisierung beider. Das Array muss nicht initialisiert werden, da sich die Elemente des Arrays im Stapelbereich des Speichers befinden und das System automatisch Speicherplatz beantragt. Die Knotenelemente der verknüpften Liste befinden sich im Heap-Bereich des Speichers, und jedes Element muss manuell Speicherplatz beantragen, z. B. malloc. Mit anderen Worten: Arrays weisen Speicher statisch zu, während verknüpfte Listen Speicher dynamisch zuweisen. Warum verknüpfte Listen verwenden, wenn sie so problematisch sind? Können Arrays verknüpfte Listen nicht vollständig ersetzen? Um auf diese Frage zurückzukommen, denken Sie einfach darüber nach, wie wir das Studenteninformationsmanagementsystem fertiggestellt haben. Warum sollte man damals verknüpfte Listen verwenden? Denn Vorgänge wie das Einfügen und Löschen im Studentenverwaltungssystem sind sehr flexibel, während Arrays eine feste Größe haben und nicht flexibel und effizient eingefügt oder gelöscht werden können. Weil Heap-Operationen flexibler sind. Jedes Mal, wenn Sie ein Element in das Array einfügen, müssen Sie die vorhandenen Elemente verschieben, aber die Elemente der verknüpften Liste befinden sich auf dem Heap, sodass solche Probleme nicht erforderlich sind.

Allerdings lassen sich die Unterschiede zwischen Arrays und verknüpften Listen wie folgt zusammenfassen:

  • Arrays weisen Speicher statisch zu, und verknüpfte Listen weisen Speicher dynamisch zu

  • Arrays sind kontinuierlich im Speicher, verknüpfte Listen sind nicht kontinuierlich

  • Array-Elemente befinden sich im Stapelbereich und verknüpfte Listenelemente befinden sich im Heap-Bereich.

  • Array Bei Verwendung der Indexpositionierung beträgt die zeitliche Komplexität O(1) und die zeitliche Komplexität der Positionierungselemente in der verknüpften Liste beträgt

  • Die zeitliche Komplexität des Einfügens oder Löschens von Elementen im Array beträgt O(n), die zeitliche Komplexität der verknüpften Liste beträgt O(1).

Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen verknüpften Listen und Arrays?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn