PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java: Stack umdrehen


Gast
2010-01-10, 01:59:02
Ich möchte eine Methode schreiben, die aus:


1
2
3
4
5


das hier macht:


5
4
3
2
1


Das sind KEINE Integers, nur ein Beispiel. Es soll allgemein gelten.

Dabei befinde ich mich innerhalb der Klasse Stack<E>.

Das Prinzip ist ja äußerst simpel. Von einem Stack das oberste Element entfernen und dafür in einem Stack2 ablegen. Das Ganze so lange, bis Stack1 leer ist. Ich komme syntaktisch nicht klar.


public void reverse() {
Stack stapel1 = new Stack();
Stack stapel2 = new Stack();

while (!stapel1.isEmpty()) {
x = stapel1.top(); // hier weiß ich schonmal nicht, wie ich den Rückgabewert eines Stackelements in einer Variable speichern kann
stapel1.pop();
stapel2.push(x); // wird wohl auch nicht so ganz richtig sein
}
}


Ideen?

Senior Sanchez
2010-01-10, 02:51:53
Dir ist aber schon klar, dass stapel1 leer ist, ja? Du erzeugst ihn und willst danach was runternehmen ohne was draufgepackt zu haben.

Top() brauchst du an der Stelle nicht, da pop() das Element zurückgibt und vom Stack löscht.
Ansonsten schaut das ganz gut aus, wobei du natürlich keine Generics benutzt aber mir war jetzt eh nicht klar, ob du das willst oder nicht.

robobimbo
2010-01-10, 10:30:42
Collections.reverse(stack); ;)

Gast
2010-01-10, 11:35:05
Dir ist aber schon klar, dass stapel1 leer ist, ja? Du erzeugst ihn und willst danach was runternehmen ohne was draufgepackt zu haben.

Top() brauchst du an der Stelle nicht, da pop() das Element zurückgibt und vom Stack löscht.
Ansonsten schaut das ganz gut aus, wobei du natürlich keine Generics benutzt aber mir war jetzt eh nicht klar, ob du das willst oder nicht.

Na ja, ich möchte eben eine Methode innerhalb von Stack<E> schreiben, die aus stapelsoundso durch stapelsoundso.reverse() den Stack stapelsoundso invertiert. Ob mit Generics oder nicht ist egal. Ich kenne mich aber auch noch nicht so gut aus damit.