#include <iostream>  // für die einfache Textausgabe

#include "stack.h"
#include "queue.h"
#include "liste.h"

using namespace std; // für iostream

int main(void) {
  cout << "Zahleneingabe bis 0; Einfuegen in Stack, Queue und sortiert in Liste." << endl;

  StackPtr s=0; QueuePtr q=0; ListenPtr l=0;
  // Zeiger immer mit 0 initialisieren!
  empty(s); empty(q); empty(l);
  DataType zahl;

  cout << "Erste Zahl: "; cin >> zahl;
  while (zahl) { // Kurzform für while (zahl!=0)
    push(s,zahl); enqueue(q,zahl); insert(l,zahl);
    cout << "Nexte Zahl: "; cin >> zahl;
  }
  cout << "Ausgabe vom Stack (inkl. Loeschen der Elemente): ";
  while (!is_empty(s)) {
    cout << top(s) << " ";
    pop(s);
  }
  cout << endl;
  cout << "Ausgabe der Queue (inkl. Loeschen der Elemente): ";
  while (!is_empty(q)) {
    cout << front(q) << " ";
    dequeue(q);
  }
  cout << endl;
  cout << "Ausgabe der Liste (inkl. Loeschen der Elemente): ";
  while (!is_empty(l)) {
    cout << head(l) << " ";
    removeFirst(l);
  }
  cout << endl;
  system("Pause"); // warte vor Beenden des Programms auf einen Tastendruck
  // zum Abschluss noch das fehlerfreie Beenden an die Konsole melden
  return 0;
}
