Stapeln, Stack

Aufrufe: 1508     Aktiv: 18.05.2020 um 23:48

1

Hey, ich bin mir nicht so sicher, ob ich diese Aufgabe richtig verstanden habe und wie ich das jetzt genau machen soll... die Befehle, die wir bis jetzt gelernt haben sind:

  • KonstruktorStack ( )
  • isEmpty ( )
  • push (inhalt)
  • pop ( )

Also das letzte ist sowie ich das jetzt verstanden habe dafür, dass etwas wieder vom Stapel runter soll. Dazu sollen wir jetzt aber diese Aufgabe (steht unten) machen und ich weiß nicht, wie ich das machen soll und ob da zum Beispiel etwas in die Klammern soll oder nicht und ob ich einfach nur einige Befehle dann aufgelistet habe..... naja ihr habt da wahrscheinlich mehr Ahnung von als ich, wäre lieb wenn mir jemand helfen könnte :/

Erstelle dir vier gleich große Karten mit den Wörtern "Sport", "Hausaufgaben", "Freizeit" und "Schlafen". Mische diese Karten zufällig. Leg die erste der vier Karten in deinen "virtuellen" Stapel und notiere den Befehl, der dazu gehört. Zum Beispiel: 1. stapel.Stack() (Konstruieren des Stapels), 2. stapel.push("Sport"). Dies machst du, bis alle Karten in einer bestimmten Reihenfolge auf dem Stapel liegen. Es müssten sich insgesamt 5 Befehle ergeben, die dies dokumentieren. Nun soll der Stapel geleert werden: Man darf aber immer nur oben den letzten Eintrag entfernen. Notiere auch hierfür die benötigten Befehle und schreibe auf, welche Reihenfolge der Karten ausgegebenen werden würde. Schließlich prüfst du, ob der Stapel leer ist.

Diese Frage melden
gefragt

Punkte: 10

 
Kommentar schreiben
2 Antworten
0

Hier nochmal als Java Code:

    //create stack
    Stack<String> stack = new Stack<>();

    //add cards
    stack.push("Sport");
    stack.push("Hausaufgaben");
    stack.push("Freizeit");
    stack.push("Schlafen");

    //shuffle stack
    Collections.shuffle(stack);

    //1. option: pop cards dynamically
    while(!stack.isEmpty()){
        stack.pop();
    }


    //2. option: pop cards manually
    stack.pop();
    stack.pop();
    stack.pop();
    stack.pop();

    //Check if stack is empty
    System.out.println(stack.isEmpty());

Falls du die Karten als eigene Klasse erstellst, musst du dem Stack als Generic natürlich den entsprechenden Kartentyp statt Stack mitgeben (also zB Stack stack = new Stack<>();). Da die Klasse Stack von Vector erbt, kann man hier auch die Collections Methoden verwenden (Collections.shuffle(stack)). Je nachdem ob du die Karten für eine dynamische Größe entfernen (stack.pop()) willst oder für eine feste, kannst du Möglichkeit 1 oder 2 verwenden

Diese Antwort melden
geantwortet

Student, Punkte: 20

 

Kommentar schreiben

-1

Hallo, ein Stack arbeitet immer nach dem LIFO Prinzip. Das heist Last In, First Out. Als erstes musst Du wohl den Stapel "konstruieren". Nach Deinen Angaben stapel.Stack(). Dann musst Du Deine Karten auf den Stapel legen. Das geht mit push. Also stapel.push("Sport"). Ist so als ob Du die (Spiel)Karte vor Dich hinlegst. Dann legst Du die anderen 3 Karten genauso auf den Stapel. Z.B Hausaufgaben, Freizeit, Schlafen. Welches ist dann die oberste Karte? Genau, Schlafen und Sport ist die unterste. Benötigt hast Du 5 Befehle. 1x Konstruktor und 4x push. Wenn Du nun den Stapel mit stack.pop() leerst bekommst Du die Karten in "umgekehrter" Reihenfolge wieder. Also Schlafen, Freizeit, Hausaufgaben und Sport. Das Ganze macht Du "while NOT stack.isEmpty()". Ich hoffe, ich habe Die Aufgabe richtig verstanden. Wenn nicht, lass es mich wissen. Auch sonst, bei Fragen, fragen. Gruß jobe.

Diese Antwort melden
geantwortet

Sonstiger Berufsstatus, Punkte: 505

 

Kommentar schreiben