Teil V Grundlegende Datenstrukturen Grundlegende Datenstrukturen Überblick 1 Einführung 2 Datenstrukturen für Kollektionen 3 Stacks und Queues 4 Bäume, Suchbäume und Hash-Tabellen 5 Allgemeine Graphen Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 5–1 Grundlegende Datenstrukturen Einführung Datenstrukturen Immer wiederkehrende Anforderungen an Verwaltung von Daten im Haupt- und Sekundärspeicher: ◮ ◮ ◮ typische Anordnungen und Zusammenhänge, typische Operationen und immer möglichst effizient! Vergleichbar Algorithmenmustern für die Verarbeitung von Daten: „klassische“ Datenstrukturen als Muster für effiziente Verwaltung von Daten Darüber hinaus: viele klassische Datenstrukturen oft als direkt wiederverwendbare Implementierungen in Programmiersprachenbibliotheken vorhanden Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 5–2 Grundlegende Datenstrukturen Einführung Beispiele für Datenstrukturen und deren Verwendung Prüfungslisten mit geordneten Studentendaten Knoten- und Kantenlisten in BREP-Modellen Das Inventory einer Computerspielfigur als Menge von Gegenständen Verzeichnisbäume zur Verwaltung von Dateien Straßennetzwerke eines Routenplaners als Graphen Warteschlangen mit Prozessen für die Prozessverwaltung des Betriebssystems Der Programmstack zur Verwaltung lokaler Daten von Funktionen während der Programmausführung B-Bäume als Indexe für schnelle Zugriffe in Datenbanksystemen (→) Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 5–3 Grundlegende Datenstrukturen Einführung Definition: Datenstrukturen Definition (Datenstruktur) Eine Datenstruktur ist eine Anordnungsvorschrift zur Organisation und Speicherung von Daten, die für bestimmte Klassen von Anwendungen einen effizienten Zugriff ermöglicht. Umfasst zwei wesentliche Aspekte: Schnittstelle: Festlegung der möglichen Operationen und des Verhaltens als abstrakte Spezifikation (Abstrakte Datentypen →) oder konkrete Programmierschnittstelle (z.B. Bibliotheken wie C++ Standard Template Library →) Implementierung: konkrete Umsetzung in einer Programmiersprache durch möglichst effiziente Speicherstrukturen und Algorithmen Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 5–4 Grundlegende Datenstrukturen Einführung Abstrakte Datentypen Abstrakte Datentypen (ADTs) als implementierungsunabhängige Spezifikationmethode der Schnittstelle und der Semantik Beispiel: Menge type Set[Item] operators create: → Set is_empty: Set → Bool insert: Set × Item → Set is_in: Set × Item → Bool axioms ∀s : Set, ∀i,j : Item is_empty (create) = true is_empty (insert (s, i)) = false is_in (create, i) = false is_in (insert (s, i), j) = if i=j then true else is_in (s, j) insert(insert(s,i),j) = insert(insert(s,j),i) insert(insert(s,i),i) = insert(s,i) Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 5–5 Grundlegende Datenstrukturen Einführung Eigenschaften von Datenstrukturen Datenstrukturen sind ... ... komplex: werden durch Typkonstruktoren (mit Zeigern, Feldern, Strukturen, Klassen, etc.) aus einfacheren Strukturen zusammengesetzt und letztendlich auf Basisdatentypen (numerische, alphanumerische) zurückgeführt ... dynamisch: können konkrete Ausprägung zur Laufzeit ändern, um zum Beispiel beliebige Anzahl neuer Fakten aufzunehmen oder diese aus der Struktur zu entfernen ... wiederverwendbar: erlauben, wenn einmal definiert, den Einsatz für zahlreiche verschiedene Anwendungen Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 5–6