Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Stacks Referat im Fach Basisinformationstechnologien 14.01.2004 von Venelina Koleva.

Ähnliche Präsentationen


Präsentation zum Thema: "Stacks Referat im Fach Basisinformationstechnologien 14.01.2004 von Venelina Koleva."—  Präsentation transkript:

1 Stacks Referat im Fach Basisinformationstechnologien 14.01.2004 von Venelina Koleva

2 1.Definition: Ein Stack ist ein abstrakter Datentyp,bei dem Elemente eingefügt und wieder entfernt werden können. Derartige Datentypen,die als Behälter für Elemente dienen,fasst man oft unter Oberbegriffen wie Container oder Collection zusammen. Unter den Behälter-Datentypen zeichnen sich Stacks dadurch aus,dass immer nur auf dasjenige Element zugegriffen werden kann,das als letztes eingefügt wurde. Dafür gibt es ein Schlagwort: LIFO= Last-In-First-Out

3 Das englische Wort Stack kann man als Stapel übersetzen.Dabei liegt es nahe an einem Stapel von Tellern,Tabletts oder Säcken zu denken,bei dem man immer nur auf das oberste Objekt zugreifen kann-das ist automatisch das,welches als letztes auf dem Stack abgelegt wurde.

4 2.Die Datenstruktur Stack: Element: x Stack: s emptyStack

5 3. Stackoperationen: Der einfachste Stack ist der leere Stack,oder emptyStack.Ob ein Stack leer ist oder nicht kann man mittels eines Prädikats isEmpty testen. Die einfachsten Stackoperationen,die einen Stack s manipulieren sind: push(x,s) – legt ein Element x auf den Stack s top(s)-liefert das zuletzt auf den Stack s gelegte Element pop(s)-entfernt das zuletzt auf den Stack s gelegte Element

6 Abb.1 top push pop Push(x,s) pop x s pop(s)

7 Abstrakt lässt sich die Datenstruktur Stack folgendermaßen beschreiben: Datentyp:Stack of Elements Operationen: Konstruktoren: emptyStack: Stack push:Element x Stack Stack Prädikat: isEmpty:Stack Boolean Destruktoren: top::Stack Integer pop::Stack Stack

8 Gleichungen: isEmpty(emptyStack)=true isEmpty(push(x,s))=false top(push(x,u))=x pop(push(x,u))=u -Jeder Stack lässt sich allein mit den Operationen emptyStack und push konstruieren,daher heißen diese auch Konstruktoren -top und pop sind Destruktoren,auch Selektoren genannt

9 Zusätzliche Operationen: isFull liefert true, falls der Stack voll ist Size(s) liefert die aktuelle Anzehl der Elemente in s maxSize(s)- die max.mögliche Anzahl von Elementen eines Stacks

10 4.Implementierung durch ein Array Wenn man bereit ist,eine maximale Stackgröße hinzunehmen,kann man einen Stack mit einem Array A und einer Integervariablen TopIndex mit 0<= TopIndex<A.lenght implementieren B E I S P I E L J Q P M V H 0 1 2 3 4 5 6 7 8... 13 TopIndex MaxIndex

11 5.Implementierung durch eine Liste In den meisten Anwendungsfällen ist vorher nicht absehbar,wie groß der Stack zur Laufzeit werden wird.Wählt man einen großen Wert für MaxIndex,wird evtl.viel Platz verschenkt.Flexibler ist die Implementierung mit einer verketteten Liste. Das ist eine Menge von Kettengliedern(Zellen),die jeweils aus einem Inhalt und einer Referenz auf das folgende Glied bestehen. Die Referenz des letzten Gliedes ist null. L E I P S I E B

12 5.Auswertung von Postfix- Ausdrücken Jeder arithmetische Ausdruck in normaler Schreibweise kann in eine Postfix- Notation umgewandelt werden,bei der sich die Operatoren stets rechts von der Operanden befinden Beispielweise wird aus dem arithmetischen Ausdruck (2+4)²/(16-7) der Postfix-Ausdruck: 2 4 + ² 16 7 - / Dieser kann mittels eines Stacks von links nach rechts abgearbeitet werden: -Ist das gelesene Datum ein Operand,so wird es mit push auf den Stack gelegt. -Ist das gelesene Datum ein n -steliger Operator,dann wird er auf die obersten n -Elemente des Stacks angewandt.Das Ergebnis ersetzt diese n Elemente.

13 Abb.2 1.2 4 + ² 16 7 - / 6. 7 - / 16 36 2. 4 + ² 16 7 - / 2 7. - / 7 16 4 36 3. + ² 16 7 - / 2 8. / 9 36 4. ² 16 7 - / 6 9. 4 5. 16 7 - / 36 Ergebnis:4

14 6.Stackpaare Zwei Stacks werden in einem gemeinsamen Array unterbringt,wobei sie in entgegengesetzte Richtungen aufeinander zuwachsen. Wachstumsrichtung Wachstumsrichtung ==============> <============= L I N K E R R E T H C E R LeftTopIndex RightTopIndex

15 Literaturhinweis: H.-P. Gumm/M.Sommer Einführung in die Informatik www.informatik.uni-stuttgart.de www.informatik.hu-berlin.de


Herunterladen ppt "Stacks Referat im Fach Basisinformationstechnologien 14.01.2004 von Venelina Koleva."

Ähnliche Präsentationen


Google-Anzeigen