Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

6 Folgen (Teil II - Datenstrukturen und Algorithmen)

Ähnliche Präsentationen


Präsentation zum Thema: "6 Folgen (Teil II - Datenstrukturen und Algorithmen)"—  Präsentation transkript:

1 6 Folgen (Teil II - Datenstrukturen und Algorithmen)
Modell: [T] mit Basistyp T Invariante: evtl. Längenbeschränkung evtl. Beschränkung des Wertebereichs des Basistyps Operationen: zum Auslesen, Ersetzen von Elementen der Folge, ferner Löschen und Hinzufügen von Elementen

2 Operationen: Keller (fkt.)Liste Schlange D-Schlange (imp.)Liste (imp.)Feld length length length length length length empty empty empty empty empty put(pos) write(pos) push cons append appendR ins(pos) top head front get(pos) read(pos) pop tail del(pos) pop remove removeF appendF removeR cat cat cut(pos) iterate iterate iterate iterate iterate iterate Vererbungshierarchien bieten sich an!

3 6.1 Keller (Stapel, stack) wichtigste Operationen: push pop top
typische Repräsentationen: Feld (mit „Kellerzeiger“, stack pointer), lineares Geflecht, natürliche Zahl (!) typische Anwendungen: Speicherverwaltung Umwandlung Rekursion -> Iteration Auswertung von Ausdrücken (auch Syntaxanalyse allg.)

4 Speicherverwaltung mit Keller:
Prozedureintritt: Parameter kellern Rücksprungadresse kellern Speicher für die temporären Variablen der Prozedur reservieren Prozeduraustritt: Speicher wieder freigeben Rücksprungadresse auskellern Parameter abräumen Im Gegensatz dazu Speicherverwaltung mit Halde (heap): aufwendiges Suchen eines freien Bereichs bei new aufwendiges Suchen nach freigebbaren Bereichen (die von nicht mehr erreichbaren Objekten belegt werden)

5 Entrekursivierung mit Keller: (ALP I/II:) 3 Fälle: Prozedur ist
endrekursiv: einfach nicht endrekursiv, aber noch linear rekursiv: schwieriger, evtl. endrekursive Einbettung finden nicht linear rekursiv: schwierig - expliziten Keller verwenden Einfaches Beispiel für quadratische Rekursion: Türme von Hanoi void move(int size, int from, int to, int via) { if (size > 0) { move(size-1, from, via, to); carry(from, to); move(size-1, via, to, from); } }

6 Auswertung/Übersetzung von Ausdrücken:
einfach bei Postfix-Notation, weil Syntaxanalyse trivial: Zwischenergebnisse kellern schwieriger bei Infix-Notation, weil Syntaxanalyse nicht trivial: Operanden-Keller und Operatoren-Keller verwenden, dabei Operator-Vorrang berücksichtigen


Herunterladen ppt "6 Folgen (Teil II - Datenstrukturen und Algorithmen)"

Ähnliche Präsentationen


Google-Anzeigen