Inhaltsverzeichnis
1. Übersicht über die verknüpfte Liste
2. Definition einer einfach verknüpften Liste
1. Definition
2. Die Ähnlichkeiten und Unterschiede zwischen dem Kopfzeiger und dem Kopfknoten
3. Code-Demonstration
3. Operationen einer einfach verknüpften Liste
1) Einfügungssimulation
Angenommen, der Knoten, der das Element e speichert, ist s und fügt s hinter dem ai-Knoten ein.
1) Löschsimulation
Angenommen, der Knoten, der das Element ai speichert, ist q und der Vorgang zum Löschen des Knotens q aus einer einfach verknüpften Liste soll implementiert werden.
Heim häufiges Problem Eine verknüpfte Liste ist eine lineare Liste, die in welcher Speicherstruktur gespeichert ist

Eine verknüpfte Liste ist eine lineare Liste, die in welcher Speicherstruktur gespeichert ist

Nov 22, 2021 pm 03:04 PM
存储结构 链表

Eine verknüpfte Liste ist eine lineare Liste, die in einer „verketteten“ Speicherstruktur gespeichert ist. Die von den Datenelementen der verknüpften Liste belegten Speichereinheitsadressen können kontinuierlich oder diskontinuierlich sein. Der entsprechende Speicherplatz kann je nach Bedarf vorübergehend und dynamisch zugewiesen werden. Die logische Beziehung zwischen den Datenelementen kann durch „Kette“ ausgedrückt werden.

Eine verknüpfte Liste ist eine lineare Liste, die in welcher Speicherstruktur gespeichert ist

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Dell G3-Computer.

Um die Mängel der sequentiellen Tabellenspeicherstruktur zu überwinden, den Speicherplatz voll auszunutzen und die Betriebseffizienz zu verbessern, können lineare Tabellen eine andere Speicherstruktur verwenden – Verkettete Speicherstruktur. Die verknüpfte Speicherstruktur der linearen Liste wird als „Linkliste“ bezeichnet

1. Übersicht über die verknüpfte Liste

Die von den Datenelementen der verknüpften Liste belegten Speichereinheitsadressen können je nach Bedarf kontinuierlich oder diskontinuierlich sein Beantragen Sie vorübergehend und dynamisch die Zuweisung des entsprechenden Speicherplatzes, und die logische Beziehung zwischen Datenelementen kann als „Kette“ ausgedrückt werden.

Das Einfügen und Löschen verknüpfter Listen erfordert keine Verschiebung von Datenelementen, lediglich die Kette muss geändert werden.

Klassifizierung verknüpfter Listen:

1. Klassifizierung nach Speicherzuordnung für verknüpfte Listen

① Dynamische verknüpfte Liste

② Statische verknüpfte Liste

2. Klassifizierung nach Verknüpfungsmethode

① Einzelne verknüpfte Liste

② Zirkular verknüpfte Liste

③ Doppelt verknüpfte Liste

(Alles sind dynamisch verknüpfte Listen)

2. Definition einer einfach verknüpften Liste

1. Definition

Um die logische Beziehung zwischen jedem Datenelement ai und seinem direkten Nachfolger darzustellen Datenelement ai+1, für jedes Datenelement Zusätzlich zum Speichern seiner eigenen Informationen muss ai auch Informationen speichern , die seinen direkten Nachfolger angeben (Speicherort des Nachfolgers – Adresse).

Das Feld, in dem Datenelementinformationen gespeichert werden, heißt Datenfeld, und das Feld, in dem direkte Nachfolgerpositionen gespeichert werden, heißt Zeigerfeld Die im Zeigerfeld gespeicherten Informationen werden Zeiger oder Kette genannt.

Diese beiden Informationsteile bilden das Speicherbild des Datenelements ai, das Knoten genannt wird.

n Knoten sind zu einer verknüpften Liste verknüpft, die die verknüpfte Speicherstruktur der linearen Liste darstellt (a1, a2, a3, ..., an), da jeder Knoten der verknüpften Liste nur ein Zeigerfeld enthält genannt Es handelt sich um eine einzelne verknüpfte Liste.

Bei linearen Listen gibt es immer einen Kopf und einen Schwanz, und verknüpfte Listen bilden da keine Ausnahme. Der Zeiger auf den ersten Knoten der einfach verknüpften Liste in der verknüpften Liste wird als Kopfzeiger bezeichnet. Der Zugriff auf die gesamte verknüpfte Liste muss vom Kopfzeiger aus beginnen, und auf jeden nachfolgenden Knoten wird vom Nachfolger verwiesen Zeiger des vorherigen Knotens. Der Zeiger des letzten Knotens der verknüpften Liste ist „null (normalerweise dargestellt durch NULL)“ – ein Nullzeiger.

Um die Implementierung verschiedener Operationen in der verknüpften Liste zu erleichtern, wird ein Knoten desselben Typs vor den ersten Datenknoten der einfach verknüpften Liste gesetzt. Dieser Knoten wird als Kopfknoten bezeichnet.

Das Datenfeld des Hauptknotens kann spezielle Flag-Informationen wie die Länge der verknüpften Liste speichern oder keine Daten speichern.

Der erste Datenknoten und der letzte Knoten der verknüpften Liste werden auch Kopfknoten und Endknoten genannt.

2. Die Ähnlichkeiten und Unterschiede zwischen dem Kopfzeiger und dem Kopfknoten

Kopfzeiger:

  • Der Kopfzeiger bezieht sich auf den Zeiger, der auf den ersten Knoten in der verknüpften Liste zeigt Der Kopfknoten zeigt auf den Kopfzeiger auf den Knoten.
  • Der Kopfzeiger hat eine Identifikationsfunktion und wird häufig als Name der verknüpften Liste verwendet.
  • Egal ob die verknüpfte Liste leer ist oder nicht, der Kopfzeiger ist nicht leer. Der Kopfzeiger ist ein notwendiges Element der verknüpften Liste.

Kopfknoten:

  • Der Kopfknoten wird zur Vereinheitlichung und Vereinfachung von Operationen eingerichtet. Er wird vor dem Knoten des ersten Elements platziert und sein Datenfeld ist im Allgemeinen unbeabsichtigt.
  • Mit dem Kopfknoten werden die Vorgänge des Einfügens eines Knotens vor dem ersten Elementknoten und des Löschens des ersten Knotens mit denen anderer Knoten vereinheitlicht.
  • Der Kopfknoten ist nicht unbedingt ein notwendiges Element der verknüpften Liste.

3. Code-Demonstration

/*线性表的单链表存储结构*/
/*结点定义*/
typedef struct Node
{
    ElemType data;
    struct Node *next;
}Node;

/*单链表定义*/
typedef struct Node *LinkList;
Nach dem Login kopieren

3. Operationen einer einfach verknüpften Liste

1) Einfügungssimulation

Angenommen, der Knoten, der das Element e speichert, ist s und fügt s hinter dem ai-Knoten ein.

Denken: Können die beiden Sätze des Einfügungscodes ausgetauscht werden?

Nein, wenn man es umschaltet, können nachfolgende Elemente wie ai+1 nicht gefunden werden, da das Zeigerfeld von s nicht auf die Adresse von ai+1 zeigt.

2) Algorithmusidee zum Einfügen der i-ten Daten in den Knoten einer einfach verknüpften Liste

Deklarieren Sie einen Knoten p, der auf den ersten Knoten der verknüpften Liste zeigt, und initialisieren Sie j=1;
  • Wenn j
  • Wenn p am Ende der verknüpften Liste leer ist, bedeutet dies, dass das i-te Element nicht existiert Die Suche ist erfolgreich, ein leerer Knoten s wird generiert (mithilfe der Malloc-Funktion)
  • Weisen Sie das Datenelement e zu s->data zu, d. h. fügen Sie die Standardanweisung für s->data=e;
  • ein: s->next=p->next; p->next=s;
  • Rückkehr erfolgreich.
  • 2. Löschvorgang

1) Löschsimulation

Angenommen, der Knoten, der das Element ai speichert, ist q und der Vorgang zum Löschen des Knotens q aus einer einfach verknüpften Liste soll implementiert werden.

2) Algorithmusidee zum Löschen des i-ten Datenknotens in einer einfach verknüpften Liste

Deklarieren Sie einen Knoten p, der auf den ersten Knoten der verknüpften Liste zeigt, und initialisieren Sie j=1;
  • Wenn j< ;i, traverse Lassen Sie in der verknüpften Liste den Zeiger von p rückwärts bewegen und kontinuierlich auf den nächsten Knoten j++ zeigen;
  • Wenn p am Ende der verknüpften Liste leer ist, bedeutet dies, dass das i-te Element dies nicht tut Wenn die Suche erfolgreich ist, wird der Knoten p-> neben q zugewiesen. Fügen Sie die Standardanweisung ein: p->next=q->next; q->data;
  • Q-Knoten freigeben
  • Erfolg zurückgeben.
  • 4. Vergleich zwischen einfach verknüpfter Listenstruktur und sequentieller Listenstruktur
  • Speichermethode:
Sequentielle Tabelle verwendet eine kontinuierliche Speichereinheit, um die Datenelemente in der linearen Liste der Reihe nach zu speichern.

Einfach verknüpfte Liste verwendet einen verknüpften Speicher Struktur unter Verwendung einer Gruppe beliebiger Speichereinheiten zum Speichern linearer Tabellenelemente Tabelle O(n)

Einfach verknüpfte Liste O(1)
  • Speicherplatzleistung:
Die Sequenztabelle erfordert vorab zugewiesenen Speicherplatz, wenn sie in eine große Größe unterteilt wird In eine kleine Größe ist es anfällig für Überlauf.

Einfach verknüpfte Liste erfordert keinen vorab zugewiesenen Speicherplatz. Sie können so viel zuweisen, wie Sie benötigen, und die Anzahl der Elemente ist nicht begrenzt.

    Für weitere verwandte Informationen Bitte besuchen Sie die
  • FAQ
  • -Kolumne!

Das obige ist der detaillierte Inhalt vonEine verknüpfte Liste ist eine lineare Liste, die in welcher Speicherstruktur gespeichert ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Eine ausführliche Diskussion der physischen Speicherstruktur des Linux ext2-Dateisystems Eine ausführliche Diskussion der physischen Speicherstruktur des Linux ext2-Dateisystems Mar 14, 2024 pm 09:06 PM

Das Linuxext2-Dateisystem ist ein Dateisystem, das auf den meisten Linux-Betriebssystemen verwendet wird. Es verwendet eine effiziente Festplattenspeicherstruktur, um die Speicherung von Dateien und Verzeichnissen zu verwalten. Bevor wir uns mit der physischen Speicherstruktur des Linuxext2-Dateisystems befassen, müssen wir zunächst einige grundlegende Konzepte verstehen. Im ext2-Dateisystem werden Daten in Datenblöcken (Blöcken) gespeichert, den kleinsten zuweisbaren Einheiten im Dateisystem. Jeder Datenblock hat eine feste Größe, normalerweise 1 KB, 2 KB oder 4

Suchen Sie mithilfe der rekursiven Methode den n-ten Knoten aus der letzten verknüpften Liste in C++ Suchen Sie mithilfe der rekursiven Methode den n-ten Knoten aus der letzten verknüpften Liste in C++ Sep 15, 2023 pm 05:53 PM

Gegeben sei eine einfach verknüpfte Liste und eine positive ganze Zahl N als Eingabe. Das Ziel besteht darin, mithilfe der Rekursion den N-ten Knoten am Ende der angegebenen Liste zu finden. Wenn die Eingabeliste Knoten a→b→c→d→e→f hat und N 4 ist, dann ist der vierte Knoten vom letzten c. Wir werden zunächst bis zum letzten Knoten in der Liste durchlaufen und bei der Rückkehr von der rekursiven (Backtracking-)Inkrementzählung. Wenn count gleich N ist, wird als Ergebnis ein Zeiger auf den aktuellen Knoten zurückgegeben. Schauen wir uns hierfür verschiedene Eingabe- und Ausgabeszenarien an - Eingabeliste: -1→5→7→12→2→96→33N=3 Ausgabe − Der N-te Knoten vom letzten ist: 2 Erläuterung − Der dritte Knoten ist 2 . Eingabe − Liste: -12→53→8→19→20→96→33N=8 Ausgabe – Knoten existiert nicht

PHP-SPL-Datenstrukturen: Bringen Sie Geschwindigkeit und Flexibilität in Ihre Projekte PHP-SPL-Datenstrukturen: Bringen Sie Geschwindigkeit und Flexibilität in Ihre Projekte Feb 19, 2024 pm 11:00 PM

Überblick über die PHPSPL-Datenstrukturbibliothek Die PHPSPL-Datenstrukturbibliothek (Standard PHP Library) enthält eine Reihe von Klassen und Schnittstellen zum Speichern und Bearbeiten verschiedener Datenstrukturen. Zu diesen Datenstrukturen gehören Arrays, verknüpfte Listen, Stapel, Warteschlangen und Mengen, von denen jede einen bestimmten Satz von Methoden und Eigenschaften zum Bearbeiten von Daten bereitstellt. Arrays In PHP ist ein Array eine geordnete Sammlung, die eine Folge von Elementen speichert. Die SPL-Array-Klasse bietet erweiterte Funktionen für native PHP-Arrays, einschließlich Sortierung, Filterung und Zuordnung. Hier ist ein Beispiel für die Verwendung der SPL-Array-Klasse: useSplArrayObject;$array=newArrayObject(["foo","bar","baz"]);$array

Vergleich der zeitlichen Komplexität des Algorithmus von PHP-Arrays und verknüpften Listen Vergleich der zeitlichen Komplexität des Algorithmus von PHP-Arrays und verknüpften Listen May 07, 2024 pm 01:54 PM

Vergleich der Algorithmuszeitkomplexität von Arrays und verknüpften Listen: Zugriff auf Arrays O(1), verknüpfte Listen O(n); Einfügen von Arrays O(1), verknüpfte Listen Löschen von Arrays O(1). ), verknüpfte Listen O(n) (n); Sucharray O(n), verknüpfte Liste O(n).

Addiere 1 zu einer Zahl, die durch eine verknüpfte Liste dargestellt wird Addiere 1 zu einer Zahl, die durch eine verknüpfte Liste dargestellt wird Aug 29, 2023 pm 09:17 PM

Eine verknüpfte Listendarstellung einer Zahl wird wie folgt bereitgestellt: Alle Knoten der verknüpften Liste werden als eine Ziffer der Zahl betrachtet. Knoten speichern Zahlen so, dass das erste Element der verknüpften Liste die höchstwertige Ziffer der Zahl enthält und das letzte Element der verknüpften Liste die niedrigstwertige Ziffer der Zahl enthält. Beispielsweise wird die Zahl 202345 in der verknüpften Liste als (2->0->2->3->4->5) dargestellt. Um 1 zu dieser verknüpften Liste mit Zahlen hinzuzufügen, müssen wir den Wert des niedrigstwertigen Bits in der Liste überprüfen. Wenn es weniger als 9 ist, ist es in Ordnung, andernfalls ändert der Code die nächste Zahl und so weiter. Sehen wir uns nun ein Beispiel an, um zu verstehen, wie das geht: 1999 wird als (1->9->9->9) dargestellt und das Hinzufügen von 1 sollte es ändern

PHP-Datenstruktur: Der Charme verknüpfter Listen, Erkundung der dynamischen Datenorganisation PHP-Datenstruktur: Der Charme verknüpfter Listen, Erkundung der dynamischen Datenorganisation Jun 04, 2024 pm 12:53 PM

Eine verknüpfte Liste ist eine Datenstruktur, die eine Reihe von Knoten mit Daten und Zeigern zum Organisieren von Elementen verwendet und sich besonders für die Verarbeitung großer Datensätze und häufige Einfüge-/Löschvorgänge eignet. Zu seinen Grundkomponenten gehören Knoten (Daten und Zeiger auf den nächsten Knoten) und Kopfknoten (die auf den ersten Knoten in der verknüpften Liste zeigen). Zu den gängigen verknüpften Listenoperationen gehören: Hinzufügen (Endeinfügung), Löschen (spezifischer Wert) und Durchlaufen.

Python-Programm: Elemente an der ersten und letzten Position der verknüpften Liste hinzufügen Python-Programm: Elemente an der ersten und letzten Position der verknüpften Liste hinzufügen Aug 23, 2023 pm 11:17 PM

In Python ist eine verknüpfte Liste eine lineare Datenstruktur, die aus einer Folge von Knoten besteht, wobei jeder Knoten einen Wert und einen Verweis auf den nächsten Knoten in der verknüpften Liste enthält. In diesem Artikel besprechen wir, wie man in Python Elemente an der ersten und letzten Position einer verknüpften Liste hinzufügt. LinkedList inPython Eine verknüpfte Liste ist eine Referenzdatenstruktur, die zum Speichern einer Reihe von Elementen verwendet wird. In gewisser Weise ähnelt es einem Array, aber in einem Array werden die Daten an zusammenhängenden Speicherorten gespeichert, während in einer verknüpften Liste die Daten dieser Bedingung nicht unterliegen. Dies bedeutet, dass die Daten nicht sequentiell, sondern zufällig im Speicher abgelegt werden. Das wirft eine Frage auf: Wie können wir das erreichen?

Wie implementiert man verknüpfte Listenoperationen in der Go-Sprache? Wie implementiert man verknüpfte Listenoperationen in der Go-Sprache? Jun 10, 2023 pm 10:55 PM

LinkedList ist eine allgemeine Datenstruktur, die aus einer Reihe von Knoten besteht. Jeder Knoten enthält zwei Schlüsselattribute: Datenfeld (Data) und Zeigerfeld (Next). Unter diesen wird das Datenfeld zum Speichern tatsächlicher Daten verwendet, und das Zeigerfeld zeigt auf den nächsten Knoten. Auf diese Weise speichern verknüpfte Listen Daten auf eine flexible Art und Weise, die für viele verschiedene Anwendungsszenarien geeignet ist. In der Go-Sprache wird auch die verknüpfte Listenstruktur gut unterstützt. Der Inhalt wird in der integrierten Standardbibliothek von Go bereitgestellt