Liste • Datenstrukturen

Geschätzte Lektüre: 3 Minuten 485 Ansichten

Spezialisierte lineare Datenstrukturen

Doppelt verkettete Listen
• Beschreibung: Jeder Knoten enthält neben den Daten zwei Zeiger (vorheriger/nächster Knoten).
• Vorteile: Effizientes Einfügen/Löschen an beiden Enden (O(1)).
• Anwendung: Browser-Verlauf (Vor/Zurück-Navigation).

Zirkuläre Puffer (Ringbuffer)
• Beschreibung: Ein Array mit fixer Größe, bei dem das Ende wieder an den Anfang „gebunden“ ist.
• Vorteile: Konstanter Speicherverbrauch, ideal für Echtzeit-Datenströme.
• Anwendung: Audio-/Video-Pufferung (z. B. MP3-Player).

Deque (Double-Ended Queue)
• Beschreibung: Eine Warteschlange, die Einfügen/Löschen an beiden Enden erlaubt.
• Vorteile: Flexibler als Stacks/Queues (O(1) für alle End-Operationen).
• Implementierung: Oft als dynamisches Array oder doppelt verkettete Liste.

Fortgeschrittene Baumstrukturen

AVL-Bäume & Rot-Schwarz-Bäume
• Beschreibung: Selbstbalanciierende Binärbäume, die degenerierte (unbalancierte) Bäume vermeiden.
• Vorteile: Garantierte O(log n) für Suchen/Einfügen/Löschen.
• Anwendung: Datenbank-Indizes (z. B. in Java’s TreeMap).

B-Bäume & B+-Bäume
• Beschreibung: Balancierte Mehrweg-Suchbäume mit hohem Verzweigungsgrad.
• Vorteile: Optimiert für Festplattenzugriffe (Block-basierte Speicherung).
• Anwendung: Dateisysteme (ext4, NTFS), Datenbanken (MySQL, PostgreSQL).

Trie (Präfixbaum)
• Beschreibung: Baum zur Speicherung von Zeichenketten, wobei Pfade Wörtern entsprechen.
• Vorteile: Schnelle Präfixsuche (O(k) für ein Wort der Länge k).
• Anwendung: Autovervollständigung (Suchmaschinen), Rechtschreibprüfung.

Heap (Priority Queue)
• Beschreibung: Binärbaum, bei dem jeder Knoten größer/kleiner als seine Kinder ist (Min-/Max-Heap).
• Vorteile: Effizientes Entfernen des Extremwerts (O(log n)).
• Anwendung: Dijkstra-Algorithmus, Task-Scheduling.

Raumbezogene Datenstrukturen

Für geometrische Daten oder räumliche Abfragen:

Quadtree & Octree
• Beschreibung: Hierarchische Unterteilung von 2D-/3D-Räumen in Quadranten/Oktanten.
• Anwendung: Kollisionserkennung in Spielen, GIS (Google Maps).

R-Baum
• Beschreibung: Balancierter Baum für mehrdimensionale Daten (z. B. Geo-Koordinaten).
• Anwendung: Datenbanken für räumliche Abfragen (PostGIS).

k-d-Baum
• Beschreibung: Binärbaum zur Partitionierung von k-dimensionalen Räumen.
• Anwendung: Maschinelles Lernen (nearest-neighbor-Suche).

Probabilistische Datenstrukturen

Für approximative Abfragen mit minimalem Speicherbedarf:

Bloom-Filter
• Beschreibung: Bit-Array mit Hash-Funktionen zur Mengenmitgliedschaftsprüfung.
• Vorteile: Speichereffizient (keine false negatives, aber false positives).
• Anwendung: Web-Caching (Vermeidung teurer Datenbankabfragen).

HyperLogLog
• Beschreibung: Schätzt die Kardinalität großer Mengen mit konstantem Speicher.
• Anwendung: Unique Visitors-Analyse (z. B. bei Twitter).

Zeitbasierte Datenstrukturen

Für zeitliche Abfolgen oder Ereignisverwaltung:

Skip-Liste
• Beschreibung: Hierarchisch verkettete Liste mit „Express-Spuren“ für O(log n)-Suche.
• Vorteile: Einfacher zu implementieren als balancierte Bäume.
• Anwendung: Redis-Datenbank.

Segment-Baum
• Beschreibung: Baum zur effizienten Bereichsabfrage (Range Queries).
• Anwendung: Statistische Analysen (z. B. Maximum/Minimum in einem Intervall).

Die optimale Wahl hängt von den Anforderungen ab:

AnforderungEmpfohlene Struktur
Schnelle SucheHash-Tabelle, AVL-Baum
Dynamische GrößeVerkettete Liste, B-Baum
Räumliche AbfragenQuadtree, R-Baum
Echtzeit-DatenströmeRingbuffer, Heap
SpeichereffizienzBloom-Filter, Bit-Vector
Dieses Dokument teilen

Liste • Datenstrukturen

Oder Link kopieren

INHALT

Abonnieren

×
Cancel