Unterschied zwischen Array und Linked List

Autor: Laura McKinney
Erstelldatum: 3 April 2021
Aktualisierungsdatum: 7 Kann 2024
Anonim
Unterschied zwischen for und foreach
Video: Unterschied zwischen for und foreach

Inhalt


Der Hauptunterschied zwischen Array und Verknüpfte Liste in Bezug auf ihre Struktur. Arrays sind indexbasiert Datenstruktur, in der jedes Element einem Index zugeordnet ist. Auf der anderen Seite stützt sich die verknüpfte Liste auf Verweise Dabei besteht jeder Knoten aus den Daten und den Verweisen auf das vorherige und nächste Element.

Grundsätzlich ist ein Array eine Gruppe ähnlicher Datenobjekte, die an aufeinanderfolgenden Speicherorten unter einer gemeinsamen Überschrift oder einem Variablennamen gespeichert sind.

Während eine verknüpfte Liste eine Datenstruktur ist, die eine Folge von Elementen enthält, wobei jedes Element mit seinem nächsten Element verknüpft ist. In einem Element der verknüpften Liste befinden sich zwei Felder. Eines ist das Datenfeld und das andere das Verknüpfungsfeld. Das Datenfeld enthält den tatsächlichen Wert, der gespeichert und verarbeitet werden soll. Darüber hinaus enthält das Verknüpfungsfeld die Adresse des nächsten Datenelements in der verknüpften Liste. Die Adresse, die für den Zugriff auf einen bestimmten Knoten verwendet wird, wird als Zeiger bezeichnet.


Ein weiterer wesentlicher Unterschied zwischen einem Array und einer verknüpften Liste besteht darin, dass das Array eine feste Größe hat und vorab deklariert werden muss. Die verknüpfte Liste ist jedoch nicht auf die Größe und das Erweitern und Verkleinern während der Ausführung beschränkt.

  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Fazit

Vergleichstabelle

Grundlage für den VergleichArrayVerknüpfte Liste
BasicEs ist eine konsistente Menge einer festen Anzahl von Datenelementen.Es ist eine geordnete Menge, die eine variable Anzahl von Datenelementen umfasst.
GrößeWird bei der Deklaration angegeben.Keine Notwendigkeit zu spezifizieren; wachsen und schrumpfen während der Ausführung.
Speicherzuordnung Der Elementspeicherort wird während der Kompilierungszeit zugewiesen.Die Elementposition wird zur Laufzeit zugewiesen.
Reihenfolge der Elemente Nacheinander gespeichert Zufällig gespeichert
Zugriff auf das ElementDirekter oder zufälliger Zugriff, d. H. Festlegen des Array-Index oder des Index.Sequentiell zugegriffen, d. H. Durchlaufen, beginnend mit dem ersten Knoten in der Liste durch den Zeiger.
Einfügen und Löschen von ElementenRelativ langsam, da ein Schalten erforderlich ist.Einfacher, schneller und effizienter.
Suchen Binäre Suche und lineare Suchelineare Suche
Speicher benötigtWeniger Mehr
SpeicherauslastungUnwirksamEffizient


Definition von Array

Ein Array ist definiert als eine Menge einer bestimmten Anzahl homogener Elemente oder Datenelemente. Dies bedeutet, dass ein Array nur einen Datentyp enthalten kann, entweder alle Ganzzahlen, alle Gleitkommazahlen oder alle Zeichen. Die Deklaration eines Arrays lautet wie folgt:
int a;
Wobei int den Datentyp oder die Typelemente angibt, die in einem Array gespeichert werden. "A" ist der Name eines Arrays, und die in eckigen Klammern angegebene Zahl gibt die Anzahl der Elemente an, die ein Array speichern kann. Dies wird auch als Größe oder Länge des Arrays bezeichnet.

Sehen wir uns einige der Konzepte an, an die man sich bei Arrays erinnern sollte:

  • Auf die einzelnen Elemente eines Arrays kann zugegriffen werden, indem der Name des Arrays gefolgt von einem Index oder Index (der die Position des Elements im Array bestimmt) innerhalb der eckigen Klammern beschrieben wird. Um beispielsweise das fünfte Element des Arrays abzurufen, müssen Sie eine Anweisung a schreiben.
  • In jedem Fall werden die Elemente eines Arrays an einem aufeinanderfolgenden Speicherort gespeichert.
  • Das allererste Element des Arrays hat den Index Null. Dies bedeutet, dass das erste und das letzte Element als a bzw. a angegeben werden.
  • Die Anzahl der Elemente, die in einem Array gespeichert werden können, d. H. Die Größe eines Arrays oder seine Länge, ergibt sich aus der folgenden Gleichung:
    (Obergrenze - Untergrenze) + 1
    Für das obige Array wäre es (9-0) + 1 = 10. Dabei ist 0 die untere Grenze des Arrays und 9 die obere Grenze des Arrays.
  • Arrays können über die Schleife gelesen oder geschrieben werden. Wenn wir das eindimensionale Array lesen, benötigt es eine Schleife zum Lesen und eine andere zum Schreiben des Arrays, zum Beispiel:
    ein. Zum Lesen eines Arrays
    für (i = 0; i <= 9; i ++)
    {scanf ("% d", & a); }
    b. Zum Schreiben eines Arrays
    für (i = 0; i <= 9; i ++)
    {f ("% d", a); }
  • Im Fall eines 2-D-Arrays würde es zwei Schleifen erfordern, und in ähnlicher Weise würde ein n-dimensionales Array n Schleifen benötigen.

Operationen, die an Arrays ausgeführt werden, sind:

  1. Erstellung eines Arrays
  2. Durchqueren eines Arrays
  3. Einfügen neuer Elemente
  4. Löschen erforderlicher Elemente.
  5. Änderung eines Elements.
  6. Zusammenführen von Arrays

Beispiel

Das folgende Programm zeigt das Lesen und Schreiben des Arrays.

#umfassen
#umfassen
void main ()
{
int a, i;
f ("Geben Sie das Array ein");
für (i = 0; i <= 9; i ++)
{
scanf ("% d", & a);
}
f ("Geben Sie das Array ein");
für (i = 0; i <= 9; i ++)
{
f ("% d n", a);
}
getch ();
}

Definition der verknüpften Liste

Verknüpfte Liste ist eine bestimmte Liste einiger miteinander verknüpfter Datenelemente. Dabei zeigt jedes Element auf das nächste Element, das die logische Reihenfolge darstellt. Jedes Element wird als Knoten bezeichnet, der aus zwei Teilen besteht.

INFO-Teil, der die Informationen speichert, und POINTER, der auf das nächste Element zeigt. Wie Sie für das Speichern von Adressen wissen, haben wir in C eine eindeutige Datenstruktur, die als Zeiger bezeichnet wird. Daher muss das zweite Feld der Liste ein Zeigertyp sein.

Arten von verknüpften Listen sind einfach verknüpfte Liste, doppelt verknüpfte Liste, zirkuläre verknüpfte Liste, zirkuläre doppelt verknüpfte Liste.

An der verknüpften Liste ausgeführte Vorgänge sind:

  1. Schaffung
  2. Überqueren
  3. Einfügung
  4. Streichung
  5. Suchen
  6. Verkettung
  7. Anzeige

Beispiel

Das folgende Snippet veranschaulicht die Erstellung einer verknüpften Liste:

Strukturknoten
{
int num;
Knoten stuct * next;
}
start = NULL;
void create ()
{
typedef struct node NODE;
NODE * p, * q;
Zeichen Wahl;
first = NULL;
machen
{
p = (NODE *) malloc (Größe von (NODE));
f ("Geben Sie das Datenelement ein n");
scanf ("% d", & p -> num);
if (p == NULL)
{
q = start;
while (q -> next! = NULL)
{q = q -> weiter
}
p -> next = q -> next;
q -> = p;
}
sonst
{
p -> next = start;
start = p;
}
f ("Möchten Sie fortfahren (Typ y oder n)? n");
scanf ("% c", & Auswahl);
}
while ((choice == y) || (choice == Y));
}

  1. Ein Array ist die Datenstruktur, die eine Sammlung von Datenelementen ähnlichen Typs enthält, während die verknüpfte Liste als nicht-primitive Datenstruktur betrachtet wird, die eine Sammlung ungeordneter verknüpfter Elemente enthält, die als Knoten bezeichnet werden.
  2. In dem Array gehören die Elemente zu Indizes, d. H., Wenn Sie in das vierte Element gelangen möchten, müssen Sie den Variablennamen mit seinem Index oder seiner Position innerhalb der eckigen Klammer schreiben.
    In einer verknüpften Liste müssen Sie jedoch vom Kopf aus beginnen und sich durcharbeiten, bis Sie zum vierten Element gelangen.
  3. Während der Zugriff auf ein Elementarray schnell ist, dauert der Zugriff auf verknüpfte Listen linear, sodass er etwas langsamer ist.
  4. Vorgänge wie das Einfügen und Löschen in Arrays nehmen viel Zeit in Anspruch. Andererseits ist die Leistung dieser Vorgänge in verknüpften Listen schnell.
  5. Arrays haben eine feste Größe. Im Gegensatz dazu sind verknüpfte Listen dynamisch und flexibel und können ihre Größe erweitern und verkleinern.
  6. In einem Array wird der Speicher während der Kompilierungszeit zugewiesen, während er in einer verknüpften Liste während der Ausführung oder zur Laufzeit zugewiesen wird.
  7. Elemente werden nacheinander in Arrays gespeichert, während sie in verknüpften Listen zufällig gespeichert werden.
  8. Der Speicherbedarf ist geringer, da die tatsächlichen Daten im Index des Arrays gespeichert sind. Im Gegensatz dazu besteht ein Bedarf an mehr Speicher in verknüpften Listen, da zusätzliche nächste und vorherige Referenzierungselemente gespeichert werden.
  9. Darüber hinaus ist die Speichernutzung im Array ineffizient. Umgekehrt ist die Speichernutzung im Array effizient.

Fazit

Array- und verknüpfte Listen sind die Arten von Datenstrukturen, die sich in ihrer Struktur, den Zugriffs- und Manipulationsmethoden, dem Speicherbedarf und der Auslastung unterscheiden. Und haben besondere Vor- und Nachteile gegenüber ihrer Umsetzung. Folglich kann jeder nach Bedarf verwendet werden.