Ich habe folgende Stack-Klasse,die auf einem Array basiert:
Nun soll ich ein Testklasse mit main funktion schreiben, mit Drei push-pop-top-Folgen der Laenge > 5 unter Einhaltung der Stack- Invariante und Zwei nichtleere push-pop-top-Folgen mit Verletzung der Stack-Invariante.
Die Stack Invariante lautet ja in dieser Implementierung: count darf nicht außerhalb -1 <= count <= 9 liegen.
Was ist bitte mit 3 push-pop-top folgen der Länge 5 gemeint??
Java:
public final class Stack {
private int count; // aktuelle Zahl der Elemente - 1
// Index des obersten Elements
private int[] a = new int[10];
public Stack () { // Konstruktor, erzeugt den leeren Stapel
count = -1;
}
public int top() { // liefert das oberste Element
// Vorbedingung: Stapel nicht leer
if (count<=9 && count>=0) {
return a[count];
} else
return -999;
}
// legt Element ab
public void push(final int x){
// Vorbedingung: Stapel nicht voll
if (count<9) {
count++;
a[count] = x;
}
}
public void pop(){ // veraendert Stapel-Zustand: entfernt oberstes Element
// Vorbedingung: Stapel nicht leer
if (count>=0) {
count--;
}
}
}
// Klasseninvariante: count darf nicht außerhalb -1 <= count <= 9 liegen
Nun soll ich ein Testklasse mit main funktion schreiben, mit Drei push-pop-top-Folgen der Laenge > 5 unter Einhaltung der Stack- Invariante und Zwei nichtleere push-pop-top-Folgen mit Verletzung der Stack-Invariante.
Die Stack Invariante lautet ja in dieser Implementierung: count darf nicht außerhalb -1 <= count <= 9 liegen.
Was ist bitte mit 3 push-pop-top folgen der Länge 5 gemeint??
Java:
public class StackTB {
public static void main(String[] args) {
// 3 push top -pop- top folgen der laenge 5??
Stack s1 = new Stack();
s1.push(2); //Oben drauflegen
s1.pop(); // entfernen
s1.top(); //lesen
s1.push(3);
s1.pop();
s1.push(4); //Oben drauflegen
s1.pop(); // entfernen
s1.top(); //lesen
s1.push(5);
s1.pop();
s1.push(4); //Oben drauflegen
s1.pop(); // entfernen
s1.top(); //lesen
s1.push(5);
s1.pop();
}
}