26.4 Listen vom Typ LIFO
 
LIFO Die Abkürzung LIFO steht für Last In First Out. Bei einer LIFO-Liste wird bei der Ausgabe immer das als letztes eingegebene Element als erstes wieder ausgegeben. Dabei kann man Ausgaben sich ruhig verallgemeinert als irgendwelche Jobs vorstellen. Eine LIFO-Liste lässt sich dann mit einem Stapel auf einem Schreibtisch vergleichen. Neue Jobs werden oben aufgelegt und von oben wird auch abgearbeitet. Der letzte Auftrag ist also der, der als erster erledigt wird. Wollte man diese Liste mit einem Motto beschreiben, so könnte diese „Die Ersten werden die Letzten sein“ heißen.
 
UML


Abb.: 26.4.1 UML-Klassendiagramm für die Klasse LIFO, Liste und Element
 

  Die Methode haengeAn(Object wert): void hat folgende Funktionalität. Beim Aufruf dieser Methode für ein LIFO-Objekt wird ein Wert vom Typ Object  übergeben. Die Methode erzeugt ein Element und belegt die Variabel wert mit dem übergeben Wert.

Element neu = new Element(wert);

 

Jetzt erfolgt das Einbinden dieses Elementes in unsere Liste. Da gibt es zwei Situationen.

  • Die Liste ist leer:

    Dann wird das neu erzeugte Element neu zum Kopf unserer Liste und wir sind fertig.
    kopf = neu;

     
  • Die Liste ist nicht leer:


    D
    ann wird da neue Element vor den Kopf gesetzt
    neu.setNaechstes(kopf);


    und das neue Element wird zum kopf
    kopf = neu;

Da in beiden Fällen kopf = neu; erscheint, wird diese Anweisung nach der if-else-Verzweigung erst implementiert.
 

Quelltext

Download:
LIFO.java

API

package listen;
public class LIFO extends Liste {

  public void haengeAn(Object wert) {
     Element neu = new Element(wert);
     if (kopf != null)
       neu.setNaechstes(kopf);
     kopf = neu;
  }
}
Download:
ListenDemo1.
java
Wir wollen nun unsere Klassen testen.
import listen.*;

public class ListenDemo {

  public ListenDemo() {
    LIFO lifo = new LIFO();

    for (int k = 1; k <= 50; k++) {
      Integer i = new Integer(k);
      lifo.haengeAn(i);
    }

    System.out.println("Ausgabe LIFO:");
    lifo.gebeAus();

  }

  public static void main (String args[]) {
    new ListenDemo();
  }
}
Bemerkungen Wir erzeugen in einer Schleife int-Zahlenwerte von 1 bis 50. Da int-Zahlen-Werte  keine Objekte sind, müssen wir jeden einzelnen int-Zahlen-Wert als Objekt der Klasse Integer erzeugen:

Integer i = new Integer(k);

Nach seiner Erzeugung wird jedes Objekt an die LIFO-Liste angehängt. Sind alle 50 Objekte in der Liste abgelegt, werden die Werte ausgeben. Wir benutzen dazu die Methode gibAus(): void, wie wir sie in der Aufgabe 1 von Übung 26.3 implementiert haben. Es werden, wie wir erwarten die Zahlen absteigend von 50 bis 1 ausgegeben. 
 

zu

26.5 Der abstrakte Datentyp Keller
zur Startseite www.pohlig.de  (C) MPohlig 2005