/***************************************************************/
/* Prof. Dr. Carsten Vogt                                      */
/* FH Koeln, Fak. 07 / Nachrichtentechnik                      */
/* http://www.nt.fh-koeln.de/vogt                              */
/*                                                             */
/* Das Programm demonstriert Basismethoden auf Stacks.         */
/* Das Programm ist erst ab Java 5 lauffähig.                  */
/***************************************************************/

import java.io.*;
import java.util.*;

public class Stacks {

 public static void main(String[] args)  {

  /* Deklaration und Erzeugung eines Stacks */ 

  Stack<Integer> stack = new Stack<Integer>();

  /* Pruefung des Anfangszustands des Stacks */

  System.out.println();
  System.out.println("Stack 'stack' wurde erzeugt:");
  System.out.println();
  System.out.println(" stack.isEmpty(): "+stack.isEmpty());
  System.out.println();
  
  /* Hinzufuegen von drei Elementen */

  stack.push(47);
  stack.push(15);
  stack.push(32);

  /* Pruefung des Stack-Zustands und Ausgabe des obersten Eintrags */

  System.out.println();
  System.out.println("Nach Push von 47, 15 und 32 (in dieser Reihenfolge):");
  System.out.println();
  System.out.println(" stack.isEmpty(): "+stack.isEmpty());
  System.out.println();
  System.out.println(" stack.peek(): "+((Integer)stack.peek()).toString());
  System.out.println();

  /* Pruefung des Stack-Zustands */

  System.out.println();
  System.out.println("Suchen nach Eintraegen:");
  System.out.println();
  System.out.println(" stack.search(15): "+stack.search(15));
  System.out.println();
  System.out.println(" stack.search(47): "+stack.search(47));
  System.out.println();
  System.out.println(" stack.search(99): "+stack.search(99));
  System.out.println();

  /* Entfernen von drei Objekten */

  System.out.println();
  System.out.println("Entfernen von drei Objekten:");
  System.out.println();
  System.out.println(" stack.pop(): "+((Integer)stack.pop()).toString());
  System.out.println();
  System.out.println(" stack.pop(): "+((Integer)stack.pop()).toString());
  System.out.println();
  System.out.println(" stack.pop(): "+((Integer)stack.pop()).toString());
  System.out.println();
  System.out.println(" stack.isEmpty(): "+stack.isEmpty());
  System.out.println();

 }

}

