/** * Copyright (c): Uwe Schmidt, FH Wedel * * You may study, modify and distribute this source code * FOR NON-COMMERCIAL PURPOSES ONLY. * This copyright message has to remain unchanged. * * Note that this document is provided 'as is', * WITHOUT WARRANTY of any kind either expressed or implied. */ /** $Id: SimpleStack.java,v 1.3 2007-01-02 17:49:59 uwe Exp $ * * @author Uwe Schmidt * * ein einfacher stack * implementiert mit einem array fester Laenge * * die Laenge wird beim Erzeugen des stacks festgelegt * diese Version behandelt keinen stack-Ueberlauf * ist also nur beschraenkt praktisch einsetzbar */ //-------------------- public class SimpleStack { /* * das Feld fuer die Elemente * es koennen beliebige Elemente gespeichert werden */ private Object[] elems; /* * der Fuellstand des Stacks * top zeigt auf den 1. freien Eintrag */ private int top; //-------------------- /** * die Konstruktoren * zum Erzeugen des Feldes elems * und zum Initialisieren von elems und top */ public SimpleStack(int max) { // alle Referenzen werden mit null initialisiert elems = new Object[max]; top = 0; } //-------------------- public SimpleStack() { // default Laenge des Stacks ist 20 this(20); } //-------------------- /** * stack leer ? */ public boolean isEmpty() { return top == 0; } //-------------------- /** * Lesen des obersten Elements */ public Object top() { return elems[top - 1]; } //-------------------- /** * neues Element speichern */ public void push(Object o) { elems[top++] = o; } //-------------------- /** * oberstes Element loeschen * Die Zuweisung mit der ungueltigen Referenz * ermoeglicht Speicherplatz-Wiederverwendung */ public void pop() { elems[--top] = null; } //-------------------- /** * die Vorbedingungen fuer * pop und top * * es wird hier angenommen, dass * der Kunde dieser Klasse diese * Bedingungen in seiner Anwendung * einhaelt oder ueberprueft */ public boolean prePop() { return ! isEmpty(); } public boolean preTop() { return ! isEmpty(); } } //--------------------