4 Elementare Datenstrukturen

Werbung
4
4.1
Elementare Datenstrukturen
Lineares Feld
Benachbarte Elemente stehen im Speicher direkt nebeneinander. Der Zugri
auf das i-te Element erfolgt in konstanter Zeit: A[i] in O(1). Falls nicht anders
angegeben, nehmen wir hier in der Vorlesung die Gröÿe n des Feldes als gegeben
an.
4.2
Lineare Liste
Benachbarte Elemente sind miteinander verkettet. Die Datenstruktur eignet
sich besonders, wenn die Länge in vorhinein nicht bekannt ist.
Die Verkettung erfolgt durch Pointer auf die Nachfolger. Es existieren die
Funktionen NACH(p), VOR(p) und WERT(p) um auf das nachfolgende, das
vorhergehende Elemente oder den Wert direkt zuzugreifen. Weiters gibt es die
Möglichkeit die Liste doppelt zu verketten.
4.3
Stapel (Stack)
Der Stapel ist ein spezielles lineares Feld, bei dem das Einfügen und Entfernen
nur an der Spitze erlaubt ist.
Dadurch wird die LIFO-Strategie (last-in, rst-out) implementiert. Die Funktionen STAPEL_LEER, PUSH und POP werden verwendet um zu überprüfen,
ob der Stapel leer ist, um ein Element auf den Stapel zu werfen bzw. vom Stapel
S zu entfernen.
1
STAPEL_LEER(S)
1: IF t=0
2:
RETURN TRUE
3: ELSE FALSE
PUSH (S,x)
1: IF t=n THEN 'overflow'
2: ELSE
3:
t=t+1
4:
S[t]=x
POP (S)
1: IF STACK_LEER THEN 'underflow'
2: ELSE
3:
x=S[t]
4:
t=t-1
Alle Operationen benötigen nur O(1) Zeit!
Anwendung: Abarbeiten von Rekursionen, umkehren einer Reihenfolge, Umwandlung von Inx-Ausdrücken in Postx-Ausdrücken,...
4.4
Schlange (Queue)
Implementiert die FIFO-Strategie (rst-in, rst-out). Die Schlange Q verwendet
die Funktionen PUT und GET, um Werte in die Schlange zu schreiben und sie
wieder auszulesen.
PUT (Q,x)
1: IF anzahl=n THEN 'overflow'
2: ELSE
3:
anzahl=anzahl+1
4:
IF ende<n THEN ende=ende+1
5:
ELSE ende=1
6:
Q[ende]=x
GET (Q)
1: IF anzahl=0 THEN 'underflow'
2: ELSE
3:
anzahl=anzahl-1
4:
x=Q[anfang]
5:
IF anfang<n THEN anfang=anfang+1
6:
ELSE anfang=1
7:
RETURN x
Alle Operationen benötigen O(1) Zeit!
2
Herunterladen