/**************************************************************************************
***************************************************************************************
				Übungsblatt 8, Aufgabe 4
		Gruppe: Madlen Frieseke, Carsten Kötter, Erik Streb
***************************************************************************************
**************************************************************************************/

public class Doppelstack {
	
	// der SUPER-DUPER Stack
	public DStack derStack;
	
	// Definition der beiden Einzelwerte für die jeweiligen Elemente des Doppelstacks
	public class RotBlau {
		public int rot;
		public int blau;
	}

	// Definition des supertollen Doppelstacks
	public class DStack {
		public RotBlau Element[] = new RotBlau[1000];	// habs mal auf 1000 Elemente begrenzt
		public int groesse=0;				// Initialisierungswert
	}
		
	// gibt zurück, ob der Stack leer ist
	public boolean isEmpty() {
		if(derStack.groesse==0) return true;
		else return false;
	}
	
	// gibt die Größe des Stacks zurück
	public int size() {
		return derStack.groesse;
	}
	
	// gibt das oberste Element zurück
	public RotBlau top() {
		return derStack.Element[derStack.groesse];
	}

	// nimmt das oberste Element weg und gibt dieses als Funktionswert zurück
	public RotBlau pop() {
		RotBlau zwischenspeicher = new RotBlau();
		zwischenspeicher.rot=0;
		zwischenspeicher.blau=0;

		if(!isEmpty()) {
			zwischenspeicher=derStack.Element[derStack.groesse];
			derStack.groesse--;
		}
		else System.out.println("Der Stack ist leer!");
		return zwischenspeicher;
	}

	// legt ein neues Element oben auf den Stack
	public void push(RotBlau eingabe) {
		if(size()<1000) {
			derStack.Element[++derStack.groesse].rot=eingabe.rot;	// hier wird gleichzeitig auch die groesse erhöht
			derStack.Element[derStack.groesse].blau=eingabe.blau;
		}
		else System.out.println("Der Stack kann maximal 1000 Elemente enthalten. Tut mir Leid.");
	}
	
	/* nun, hier könnte man jetzt noch eine graphische Oberfläche
	mit Ein- und Ausgabe implementieren...wenn man Zeit übrig hätte */
	public static void main (String[] args) {
		Doppelstack test = new Doppelstack();
	}
}
