IntStack.java
import java.io.*;
public class IntStack {
// Stack mit automatischem Wachstum über verkettete Liste
private Liste liste;
public IntStack() {
// erzeugt einen Stack
liste = new Liste();
}
public void push(int d) {
// legt d auf dem Stack ab
liste.vornEinfügen(new ListenKnoten(d));
}
public int pop() {
// holt oberstes Element vom Stack
int ergebnis = liste.holeErstesElement().holeDaten();
liste.entferneErstesElement();
return ergebnis;
}
public boolean empty() {
// true, wenn kein Element im Stack ist
return (liste.holeErstesElement() == null);
}
public double peek() {
// gibt oberstes Element aus, ohne es zu entfernen
int ergebnis = liste.holeErstesElement().holeDaten();
return ergebnis;
}
public static void main(String[] args) throws IOException {
// kleines Testsprogramm
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
IntStack meinStack = new IntStack();
// Stack füllen
System.out.println("Positive Zahlen eingeben (beenden durch -1):");
String s;
int neuerWert;
do {
s = in.readLine();
neuerWert = Integer.parseInt(s);
meinStack.push(neuerWert);
} while (neuerWert >= 0);
// letzten Wert wieder herausnehmen, war ja Ende-Zeichen
meinStack.pop();
// Ausgabe des Stacks
System.out.println("Werte im Stack:");
while (! meinStack.empty()) {
System.out.println(meinStack.pop());
}
}
}