Informatik: einen Stapel umdrehen?
nämlich Programmiere mit Java (blueJ) ich habe die Datenstruktur Stapel und möchte die Objekte die dort drin gespeichert sind alle umdrehen ( das oberste nach unten, das unterste nach oben etc.) Ich weiß dass ich noch ein Anfänger bin deswegen brauche ich Hilfe und auf google oder youtube gab es dazu nichts..
5 Antworten
public class Main
{
public static void main(String argv[])
{
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
//Befüllung mit Beispielzahlen
for(int i = 0; i < 5; i++)
{
stack1.push(i);
}
//Iterierung durch Stack
while(!stack1.isEmpty())
{
//Oberstes Element wird auf anderen Stapel pepusht
stack2.push(stack1.top());
//Oberstes Element wird gepopt
stack1.pop();
}
}
}
Habs nicht ausprobiert aber sollte funktionieren
Dann überleg mal wie man das machen kann. Als Anfänger kann man das auch. Wenn du mehr als zwei Minuten nachgedacht hast geb ich dir ein Tipp.
Du nimmst deinen Stack s1 und einen neuen Stack s2 und überträgst alles via pop von s1 und push nach s2 in s2.
Ein Stack hat das "Last In – First Out" Prinzip, wenn du ihn umdrehen willst um das erste was du in den Stapel gepackt hast wider als ersten rausnehmen zu können, warum nutzt du dann nicht eine Pipe (First In – First Out)?
Ansosten nimm einen 2. Stack und pack jedes Objek rüber in den 2.
Pseudocode:
stack1 ist der Stack den du umdrehen willst
stack2 ist ein temporärer Stack
Solange stack1 nicht leer ist:
Von stack1 poppen und auf stack2 pushen
Dann stack1 = stack2
Damit ist stack1 umgedreht. Die Implementierung solltest du selbst hinbekommen, das ist eine einfache while-Schleife.
Davon abgesehen, ist ein Stack wohl nicht die geeignete Datenstruktur für dein Problem, wenn du ihr umdrehen musst. Vielleicht solltest du dir da mal Gedanken machen.