Datenstrukturen I Flashcards

1
Q

Datenstruktur

A
  • Art, Daten im Computer zu speichern/verwalten
  • statisch, dynamisch, abstrakt
  • Beispiele:
    • Arrays
    • Listen
    • Kellerspeicher
    • Warteschlange
    • Bäume etc.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Arrays - Eigenschaften

A
  • statische Datenstruktur
  • Zusammenhängender Speicherbereich (SB)
  • Größe SB zur Laufzeit nicht veränderbar
  • Direktzugriff über Speicheradresse

⇒ Problem, dass # der zu speichernden Objekte selten bekannt (→ dynamische DS)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Dynamische Datenstrukturen

A
  • werden mithilfe von statischen DS implementiert
  • Knoten/nodes: zusätzliche Verwaltungsstruktur
  • Referenz/pointers: Knoten aneinander gehängt

Nachteil: kein direkter Zugriff (Auswirkung Laufzeit)

  • Soll (1-3 minimal, 4 + Konkatenation [Zusammenfügen von Listen] zusätzlich):
    1. schreiben
    2. löschen
    3. lesen
    4. suchen (Traversierung der DS → Ablaufen mittels Iterator = Hilfsobjekt zum seq. Ablaufen)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Dynamische Datenstrukturen - Grundoperationen

A
  • add (Object o)
  • remove (Object o)
  • boolean contains (Object o)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Statisch vs. Dynamische Datentypen

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Abstrakter Datentyp (ADT)

A
  • besteht aus
    • Menge M von Objekten
    • Menge O von Operationen auf M
    • Beschreibung der Semantik (“Bedeutung”) der Operationen

⇒ ADTen eignen sich gut, um DS zu beschreiben

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Auswahl der Datenstruktur

A
  • stark von Anwendungsfall abhägig
    • erwartete Datenmenge
    • Häufigkeit/Wahrscheinlichkeit/Reihenfolge von Operationen
    • Semantik der Daten
    • Adressierung der Daten beim Lesen und Schreiben

geringere Komplexitätsklasse ≠ bessere Laufzeit, da u.U. zusätzlicher Mehraufwand für Verwaltungsstrukturen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Aufbau

A
  • Verwaltungselement: Organisation der Datenstruktur
  • Datenelement: enthält zu speichernden Wert
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wohlgeformte Klammerausdrücke - WKA

A
  • (), {} und [] sind WKAs
  • w1, w2 = WKA → w1w2 = WKA
  • w1 = WKA → (w1), {w1} und [w1] = WKAs
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Aufbau Liste

A

aus zwei Sorten Verwaltungselementen:

  • Knoten als Verwaltungselemente kennen jeweils ihren Nachfolger und ein Datenelement
  • Ein Listen-Element kennt den ersten Knoten
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Methoden Liste

A
  • get(int index) liefert Knoten zu index, Zugriff auf Inhalt dann mit getData
  • add(int index, Objekt o) fügt an angegebener Stelle das Objekt o ein
  • remove(Node n) löscht den Knoten
  • remove(objekt o) löscht Knoten mit Inhalt o
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Verkettete Liste

A
  • Nachteil bei Datensortierung (Traversierung)
  • Vorteil bei Verwaltung nach Reihenfolge (LIFO - Keller / FIFO - Schlange)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

einfach/doppelt verkettete Liste

A
  • doppelt: nodes haben Zeiger auf Vorgänger = prev.

⇒ Zeigeroperationen werden einfacher, da Reihenfolge auch rückwärts

  • Vorteil einfach: weniger Speicherplatz
  • Nachteil einfach: Laufzeitnachteile, da Finden Vorgänger muss Liste von vorne duchsucht werden
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Keller

A

≈ Tellerstapel

  • LIFO-Prinzip
  • kann WKAs erkennen
  • Operationen
    • push(Object o): Anfügen an Ende
    • pop( ): Ansehen & Entfernen am gleichen Ende
    • peek( ): Ansehen ohne Entfernen
  • Implementierung:
    • verkettete Liste
    • Array
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Schlange

A

≈ Supermarkt

  • FIFO
  • Operationen:
    • dequenue( ): Erstes Element wird entfernt
    • enquenue( ): Neues Element wird hinten angefügt
    • front( ): Liefert Anfangselement ohne Entfernen
  • Implementierung:
    • verkettete Liste (Zeiger auf letztes Element)
    • zirkulärem Array
How well did you know this?
1
Not at all
2
3
4
5
Perfectly