Unterschied zwischen Arrays und verketteten Listen

Anonim

Arrays gegenüber verknüpften Listen

Arrays zu erstellen. Die meisten Programmiersprachen bieten Methoden zum einfachen Deklarieren von Arrays und Zugriffselementen in den Arrays. Die verknüpfte Liste, genauer gesagt die einfach verknüpfte Liste, ist auch eine Datenstruktur, die zum Speichern der Sammlung von Elementen verwendet werden kann. Sie besteht aus einer Folge von Knoten und jeder Knoten hat eine Referenz auf den nächsten Knoten in der Sequenz.

In Abbildung 1 ist ein Codestück dargestellt, das normalerweise zum Deklarieren und Zuordnen von Werten zu einem Array verwendet wird. Abbildung 2 zeigt, wie ein Array im Speicher aussehen würde.

Der oben genannte Code definiert ein Array, das 5 Ganzzahlen speichern kann und auf die über die Indizes 0 bis 4 zugegriffen wird. Eine wichtige Eigenschaft eines Arrays ist, dass das gesamte Array als ein einzelner Speicherblock zugewiesen wird und jedes Element seinen eigenen Platz im Array. Sobald ein Array definiert ist, ist seine Größe festgelegt. Wenn Sie sich zum Zeitpunkt der Kompilierung nicht sicher sind, wie groß das Array sein soll, müssen Sie ein Array mit genügend großer Größe definieren, um auf der sicheren Seite zu sein. Aber die meiste Zeit werden wir tatsächlich weniger Elemente verwenden, als wir zugeteilt haben. So ist eine beträchtliche Menge an Speicher tatsächlich verschwendet. Auf der anderen Seite würde das Programm abstürzen, wenn das "groß genug Array" nicht wirklich groß genug ist.

Eine verknüpfte Liste ordnet Speicherelemente für ihre Elemente separat in ihrem eigenen Speicherblock zu, und die Gesamtstruktur wird durch Verknüpfen dieser Elemente als Verknüpfungen in einer Kette erreicht. Jedes Element in einer verknüpften Liste hat zwei Felder, wie in Fig. 3 gezeigt. Das Datenfeld enthält die tatsächlich gespeicherten Daten und das nächste Feld enthält den Verweis auf das nächste Element in der Kette. Das erste Element der verknüpften Liste wird als Kopf der verknüpften Liste gespeichert.

data next

Abbildung 3: Element einer verknüpften Liste

Abbildung 4 zeigt eine verknüpfte Liste mit drei Elementen. Jedes Element speichert seine Daten und alle Elemente außer dem letzten speichern eine Referenz auf das nächste Element. Letztes Element enthält einen Nullwert in seinem nächsten Feld. Auf jedes Element in der Liste kann zugegriffen werden, indem Sie am Kopf beginnen und dem nächsten Zeiger folgen, bis Sie das erforderliche Element erreichen.

Auch wenn die Arrays und verknüpften Listen in dem Sinne ähnlich sind, dass beide zum Speichern der Sammlung von Elementen verwendet werden, ergeben sich Unterschiede aufgrund der Strategien, die sie verwenden, um ihren Elementen Speicher zuzuweisen. Arrays weisen allen Elementen einen Speicher als einen einzigen Block zu und die Größe des Arrays muss zur Laufzeit bestimmt werden. Dies würde die Arrays in Situationen ineffizient machen, in denen Sie die Größe des Arrays zur Kompilierungszeit nicht kennen. Da eine verknüpfte Liste den Elementen Speicherelemente separat zuordnet, wäre sie in Situationen, in denen Sie die Größe der Liste zur Kompilierungszeit nicht kennen, sehr effizient.Die Deklaration und das Zugreifen auf Elemente in einer verknüpften Liste wäre im Vergleich zum direkten Zugriff auf Elemente in einem Array mit ihren Indizes nicht einfach.