Datenstrukturen und Abstrakte Datentypen Flashcards

1
Q

Was ist eine Datenstruktur?

A

Eine Datenstruktur ist eine Art Daten zu organisieren, um sie effizient zu nutzen.
•Essentiell um schnelle und performante Algorithmen zu schreiben.

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

Was ist ein Abstrakter Datentyp?

A

Eine Abstraktion einer Datenstruktur, die ein Interface bereitstellt, an die sich die Datenstruktur halten muss.
Es wird nicht vorgegeben, wie oder in welcher Sprache etwas implementiert werden muss.

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

Ordne den Abstrakten Datentypen mindestens eine Datenstruktur zu:
•List
•Queue
•Map

A

List: Dynamic Array, Linked List

Queue: Link List, Array oder Stack based Queue

Map: Tree Map, Hash Map / Table

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

Was ist ein statisches Array?

A

Ein statisches Array ist ein Kontainer mit fixer Größe n und indizierbaren Elementen von [0, n-1]

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

Wofür werden Arrays benutzt?

A
  • Ablegen und Aufrufen von sequenziellen Daten
  • Vorübergehendes Speichern von Objekten
  • Als Buffer füt IO Operationen
  • Lookup tables und inversive lookup tables
  • Um mehrere Werte einer Funktion zu returnen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Worin unterscheiden sich Dynamic Arrays zu statischen?

A

Sie sind in iherer Größe flexibel, das heißt sie können wachsen und schrumpfen.

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

Wie werden Dynamische Arrays in manchen Sprachen noch bezeichnet?

A

Array List oder Vector

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

Wie funktioniert ein dynamisches Array

A

1) Array mit intialer Größe wird erstellt
2) Elemente werden hinzugefügt
3) Sobald Kapazität überschritten wird, wird ein neues Array erstellt (z.B. doppelt so groß) als das ursprüngliche. Die Werte werden dann hineinkopiert.

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

Welche Bestandteile hat eine Linked List

A
  • Head: der erste Knoten in einer LL
  • Tail: der letzte Knoten in einer LL
  • Pointer: Referenz auf einen anderen Node
  • Node: ein Objekt, das Daten und je nach Typ der Liste einen oder mehrere Pointer beinhaltet
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Worin unterscheidet sich eine doppelt verkettete List zu einer einfach verketteten Liste?

A

Die doppelt verkettete Liste besitzt pro Node 2 Pointer und kann somit auch Rückwärts traversiert werden.

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

Was ist ein Traverser Pointer?

A

Ein Traverser Pointer wird erzeugt um den Pointer eines Elemements vorrübergehend zu speichern. So können dann Elemente der Liste hinzugefügt oder entfernt werden.

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

Was ist ein Stack?

A

Der Stack ist eine linerare Datenstrucktur mit einem Ende. Es wird ein Stapel aus der realen Welt damit modelliert.

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

Was sind die zwei Hauptoperationen eines Stacks?

A

Push: Das hinzufügen eines Objekts auf den Stapel
Pop: Das Entfernen eines Objekts vom Stapel
Die Operationen verfahren nach dem LIFO Prinzip (last in, first out)

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

Was ist eine Queue?

A

Eine Queue ist eine lineare Datenstruktur, die eine Warteschlange der realen Welt darstellt.

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

Was sind die Hauptoperationen einer Queue?

A

Enqueue: Ein Element wird hinten an die Reihe gehängt
Dequeue: Ein Element wird vorne von der Reihe entfernt
Die Operationen basieren auf den FIFO-Prinzip (first in, first out)

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

Was ist eine Priority Queue?

A

Ein Abstrakter Datentyp, basierend auf einer Queue, nur das hinzukommt, dass die Elemente darin eine Priorität besitzen. Nach dieser Priorität werden die Elemente dann wieder entfernt
> Funktioniert nur mit Elementen die sich vergleichen lassen

17
Q

Was ist ein Heap?

A

Ein Heap ist eine auf Bäumen basierte Datenstruktur. Jedes darin abgelegte Element besitzt einen Schlüssel, der die Priorität festlegt.
Durch die Priorität wird die Position eines Elements im Heap festgelegt.
Operationen basieren auf dem HIFO-Prinzip (high in, first out)

18
Q

Was versteht man unter der Heap Property / Heap Invariant?

A

Abhängig davon, ob es sich um einen Min oder Max Heap handelt, ist die Parent Node eines Elements immer gleich oder größer (Max Heap), bzw. gleich oder kleiner (Min Heap)

19
Q

Woran unterscheidet sich ein binary Heap zu einem normalen Heap?

A

Beim binary Heap hat jede Parent Node maximal 2 Child Nodes.

20
Q

Was ist ein Binary Search Tree?

A

Bei der abstrakten Datenstruktur Binary Search Tree, handelt es sich um eine binäre Baumstruktur, mit der besonderheit, dass die linke Child Node immer kleiner und die rechte Child Node immer größer, als die Parent Node.

left node < parent node < right node

21
Q

Was ist eine Hash Table?

A

Eine Datenstruktur die mapping von Schlüsseln zu Werten implementiert.
Meistens werden die Schlüssel durch eine Technik namens Hashing erstellt

22
Q

Was ist eine Hashing Funktion und welchen Sinn erfüllt sie?

A

Eine Hashing Funtkion errechnet einen Schlüssel mittels den Werten eines Objekts.
Mittels dem so erstellten Schlüssel kann daher leicht die Ungleichheit zweier Objekte festgestellt werden, ohne die eigentlichen Werte zu betrachten, außer beide Hashwerte sind gleich.
Es gilt mit der Hashfunktion möglichst Hash Kollisionen zu vermeiden.

23
Q

Was ist eine Hash Kollision?

A

Wenn zwei Objekte den selben Hashwert haben, deren Daten aber unterschiedlich sind, spricht man von einer Hash Kollision.