Literatur

Stack

Eine weitere Listen-Art, welche wir hier vorstellen möchten, ist der sogenannte Stack (Stapel). Die Klasse java.util.Stack ist eine Kindsklasse von java.util.Vector, welche wir im vorausgegangen Kapitel vorgestellt haben.

Stacks arbeiten nach dem LIFO (Last-In-First-Out) bzw. FILO (First-In-Last-Out) -Prinzip.  Das folgende Bild soll das Prinzip veranschaulichen:

Die schwarzen Steine stellen schon vorhandene Objekte innerhalb des Stacks dar. Der rote Stein wird über die Methode push hinzugefügt und der blaue Stein über die Methode pop entfernt.

Die Klasse Stack verfügt u.a. über folgende Methoden:

public boolean empty( )
public Object peek( )
public Object pop( )
public Object push(Object o)
public int search(Object o)

Die Methode empty testet, ob der Stack leer ist. Die Methode peek hingegen gibt das oberste Objekt zurück, ohne es - im Gegensatz zu pop -  vom Stack zu entfernen. Die Methode search durchsucht den Stack nach dem übergebenen Objekt und liefert dessen Position zurück, falls das Objekt im Stack vorhanden ist.

Hier ein kleiner Quellcode-Ausschnitt zur Verwendung von Stacks:

// Erzeugung eines neuen Stack-Objektes
Stack stack = new Stack();
// Hinzufügen von zwei Punkt-Objekten
stack.push(new Punkt( ));
stack.push(new Punkt( ));
// Entferne jeweils ein Objekt solange der Stack noch Objekte enthält
while (!stack.empty())
{
    // Entfernt das oberste Objekt vom Stack
    stack.pop();
}

Nachdem wir ein neues Stack-Objekt erzeugt haben, fügen wir diesem mit push zunächst zwei Punkt-Objekte hinzu. In einer Schleife entfernen wir mit pop solange das oberste Element bis der Stack leer ist.