Keller/Stack Problem

Status
Nicht offen für weitere Antworten.

zuro

Mitglied
Hi, hab ein Verständnis Problem mit (Stacks) bzw. folgender Aufgabe. s.u.! Hab auch schon hier im Forum geschaut, allerdings bin ich nicht wirklich weiter gekommen, hat einer zufällig ein gutes Bsp. für einen Stack. Finde bei google nur die Funktionen/Methoden, aber nicht wie man sie einsetzt bzw. immer nur kurze Beispiele dir mir nicht wirklich weiterhelfen.

Aufgabe:
Verwenden Sie hierzu den folgenden Klassenrumpf. Dabei ist zu beachten, dass der Stack eine beliebige Anzahl von Objekten speichern können muss.

Code:
public class Stack {
	
	Data last;	//oberstes Element
	
	class Data{
		Data prev;			//vorheriges Element
		Object object;		//Daten
	}
	public Stack(){
		//Implementieren Sie diese Methode
		
	}
	void push(Object o){
		//Implementieren Sie diese Methode
		
	}
	Object pop(){
		//Implementieren Sie diese Methode
				
	}
	Object top(){
		//Implementieren Sie diese Methode
		
	}
	
}
Hab bis jetzt folgendes gemacht, aber bin mir nicht sicher ob der Weg überhaupt stimmt!
Code:
import java.util.*;

public class Stack {
	
	Data last;	//oberstes Element
	
	class Data{
		Data prev;			//vorheriges Element
		Object object;		//Daten
	}
	public Stack(){
		//Implementieren Sie diese Methode
		
	}
	void push(Object o){
		//Implementieren Sie diese Methode
		s.push(o);
	}
	Object pop(){
		//Implementieren Sie diese Methode
		
		return last;                                                      
	}
	Object top(){
		//Implementieren Sie diese Methode
		return last;
	}
	
	public static void main(String[] args) {
		Stack s = new Stack();                                 //Ist das hier an der richtigen Stelle??? 

	}

}
Vielen Dank!
mfg
 

HG

Mitglied
Hey, also ich hab jetzt hier mal was gebastelt, so wie ich einen Stack machen wuerde:

Code:
public class Stack 
{
	Data last;   //oberstes Element

	public Stack()
	{
	}
	
	/**
	 * Legt ein neues Element auf den Stack
	 * @param o Die Daten des neuen Elements
	 */
	public void push(Object o)
	{
		last = new Data(last,o);
		//System.out.println("push: "+last);
	}
	
	/**
	 * Gibt das oberste Element des Stacks zurueck und loescht es vom Stack
	 * @return Das oberste Element des Stacks
	 */
	public Object pop()
	{
		Data d = last;
		
		last = last.getPrev();
		//System.out.println("pop: "+d);
		return d;
	}
	
	/**
	 * Diese Funktion gibt das oberste Element zurueck, lasst den Stack aber
	 * sonst unveraendert!
	 *  
	 * @return Das oberste Element des Stacks
	 */
	public Object top()
	{
		//System.out.println("top: "+last.toString());
		return last;
	}
} 

class Data
{
	private Data prev;         //vorheriges Element
	private Object daten;      //Daten
	
	/**
	 * Erzeugt ein neues Data Objekt
	 * @param prev Das vorgaenger Element des neu zu erzeugenden Elements
	 * @param daten Die Daten
	 */
	public Data(Data prev, Object daten)
	{
		this.prev 	= prev;
		this.daten  = daten;
	}
	
	public Data getPrev()
	{
		return prev;
	}
	
	public Object getDaten()
	{
		return daten;
	}
}

Zum testen kannst du ja dann die Ausgaben auskommentieren und sowas hier ausfuehren:
Code:
public class Test
{
	public static void main(String[] args)
	{
		Stack s = new Stack();
		
		s.push(new Object());
		s.push(new Object());
		
		s.top();
		s.pop();
		s.top();		
	}
}
 

zuro

Mitglied
Hallo, erstmal vielen Dank für deine Mühe, allerdings hab ich noch ein paar Fragen zu deinem Code.

1. Warum macht du new Data(last,o); bzw. warum steht da last in den Klammern?
Zeile: 15
Code:
public void push(Object o)
   {
      last = new Data(last,o); 
}

Warum nutzt du hier die .toString()?
Zeile: 40
Code:
 public Object top()
   {
      //System.out.println("top: "+last.toString());
      return last;
   }

mfg
 

Leroy42

Top Contributor
zuro hat gesagt.:
1. Warum macht du new Data(last,o); bzw. warum steht da last in den Klammern?

Damit das neue Objekt als Vorgängerzeiger das bis jetzt letzte Element bekommt

zuro hat gesagt.:
2. Warum nutzt du hier die .toString()?

Weil man nur Strings addieren kann und keine automatische
Umwandlung eines Objekts zu einem String existiert.
 

zuro

Mitglied
Ah soso, danke euch!

@ Roar

Hatte auch System.out.println("top: "+last); ausprobiert und hatte für mich keinen Unterschied gemacht daher hatte ich das nicht verstanden. ok :)


@ Leroy42
Damit das neue Objekt als Vorgängerzeiger das bis jetzt letzte Element bekommt

Meinst du damit das z.B. wenn nach dem ersten Objekt noch eins in den Stack kommt, das dann das 2. Objekt auf das erste zeigt?

Vielen Dank an alle die geholfen haben :) hoffe ich krieg das auch mal so schnell hin wie ihr.
 

zuro

Mitglied
ok :D Thx

Hab doch noch eine Frage, s.u. wird ja das Element gelöscht, also mit last = last.getPrev(); Ist das dann wirklich gelöscht, weil eigentlich sezte ich doch nur, na ja wie soll ich sagen den Verweis oder Zeiger um, d.h. auf das vorherige Element. Oder sehe ich das Falsch?

Zeile: 27
Code:
public Object pop()
   {
      Data d = last;
      
      last = last.getPrev();
      System.out.println("pop: "+d);
      return d;
   }
 

Leroy42

Top Contributor
zuro hat gesagt.:
eigentlich sezte ich doch nur, na ja wie soll ich sagen den Verweis oder Zeiger um,

Das ist schon richtig. Da aber danach gar keine Variable auf das Element
mehr verweist, ist es nur noch eine Frage der Zeit, wann sich der
Garbage Collector dieses nun verwaisten Objekts annimmt.

Außerdem ist es aus Sicht der Liste nicht mehr vorhanden (es kann nicht
mehr erreicht werden) und dadurch gelöscht.
 

HG

Mitglied
ja gut.
ich war den tag nicht zu hause und konnte nichts mehr dazu sagen :)

das .toString() war nur noch vom testen drin, weil ich probieren wollte ob es da einen unterschied in der ausgabe gibt.

@Roar: stimmt, man sollte bei top() nur die daten zurueck geben, hab ich uebersehen; genau das gleiche dann also auch bei pop()
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A stack Java Basics - Anfänger-Themen 14
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
V Ist Off-Heap-Speicher dasselbe wie Stack-Speicher? Java Basics - Anfänger-Themen 2
izoards Stack... Java Basics - Anfänger-Themen 17
Csircc Rekursive Methode Stack Overflow Java Basics - Anfänger-Themen 10
B Zahlenfolge von Queue in Stack Java Basics - Anfänger-Themen 29
L Stack bilden, push und pop Java Basics - Anfänger-Themen 16
KogoroMori21 Stack und Heap Speicher Java Basics - Anfänger-Themen 1
G Stack und Queue Arbeitsblatt Java Basics - Anfänger-Themen 3
G Stack programmieren Java Basics - Anfänger-Themen 6
Z Datentypen Stack based calculator Java Basics - Anfänger-Themen 8
F speicherort stack oder heap Java Basics - Anfänger-Themen 1
S Rekursiven Stack Java Basics - Anfänger-Themen 6
Curtis_MC Collections Zufälliges Element aus Stack Java Basics - Anfänger-Themen 2
D Queue vs. Stack Java Basics - Anfänger-Themen 6
P Stack, Heap Java Basics - Anfänger-Themen 13
D Erste Schritte Stack im Rollenspiel Java Basics - Anfänger-Themen 76
J Stack mit Benutzereingabe Java Basics - Anfänger-Themen 17
J Liste,Queue,Stack sortieren Java Basics - Anfänger-Themen 2
C Stack und Queue in Aktion (Bitte Hilfe für die Klausur) Java Basics - Anfänger-Themen 7
S Sequenz von Zahlen bei einem Stack möglich oder nicht möglich? Java Basics - Anfänger-Themen 5
E Stack vs Queue - Gemeinsamkeiten / Unterschiede Java Basics - Anfänger-Themen 7
C Laufzeit von Stack Operation Java Basics - Anfänger-Themen 5
4 Stack over flow bei rekursiver Tiefensuche Java Basics - Anfänger-Themen 5
J Quicksort mit Stack Java Basics - Anfänger-Themen 4
A Anzahl der Elemente in einem Stack wiedergeben Java Basics - Anfänger-Themen 3
T Stack Overflow - Rekursive Fibonacci Java Basics - Anfänger-Themen 10
K Tiefen- und Breitensuche beim Baum durch Stack und Warteschlange Java Basics - Anfänger-Themen 1
L Liste mittels Stack implementieren Java Basics - Anfänger-Themen 0
A Stack programmieren -> Unklarheiten Java Basics - Anfänger-Themen 1
C Stack - listenbasierte Implementierung Java Basics - Anfänger-Themen 4
L Mit rekursiven Aufrufen einen Stack emulieren Java Basics - Anfänger-Themen 1
T Frage zu Java Stack Java Basics - Anfänger-Themen 5
D Stack-Objekt - LIFO - wait(); notify(); Java Basics - Anfänger-Themen 0
J Array von Objekten, wie schauts im Heap / Stack aus ? Java Basics - Anfänger-Themen 7
M Frage zu Stack und Heap Java Basics - Anfänger-Themen 1
Farbenfroh Suche Übungsaufgaben: BinaryTree, Stack Java Basics - Anfänger-Themen 0
D Aufgabe: Stack mit Iterator Java Basics - Anfänger-Themen 8
X Stack mit Oberklasse, wieso funktioniert es nicht? Java Basics - Anfänger-Themen 8
B Stack/Heap Frage Java Basics - Anfänger-Themen 36
K Probleme mit stack Java Basics - Anfänger-Themen 7
K Wofür wird heute noch die Stack Klasse in Java genutzt Java Basics - Anfänger-Themen 4
F Rekursion Tiefensuch-Problem - Stack Overflow Java Basics - Anfänger-Themen 9
P LinkedList - Stack ... grundlegende Frage Java Basics - Anfänger-Themen 5
B Stack in eine verkettete Liste pushen Java Basics - Anfänger-Themen 4
J OOP Warum braucht man den Stack Java Basics - Anfänger-Themen 3
B Queue mit Daten aus einem Stack füllen Java Basics - Anfänger-Themen 21
G Stack invertieren Java Basics - Anfänger-Themen 3
H Pseudo-Stack (char[] stackArray) mit Zeichen aus einer .txt-Datei befüllen Java Basics - Anfänger-Themen 5
S Stack Problem mit Objekt Java Basics - Anfänger-Themen 2
X String mit String von Objekt im Stack vergleichen? Java Basics - Anfänger-Themen 14
D Stack auslesen mit pop Java Basics - Anfänger-Themen 2
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
S Exceptions bei push/pop in Stack Java Basics - Anfänger-Themen 8
S Eigene Stack Klasse Java Basics - Anfänger-Themen 26
S Stack: Klasseninvariante Java Basics - Anfänger-Themen 4
L OOP Wrapper Klassen - Stack-Aufgabe Java Basics - Anfänger-Themen 2
M Frage zu Stack Java Basics - Anfänger-Themen 3
D Problem mit Set, Stack und Random Java Basics - Anfänger-Themen 2
O Stack Implementierung als verkettete Liste Java Basics - Anfänger-Themen 8
T Probleme bei einen Stack der über drei Dateien funktionieren soll Java Basics - Anfänger-Themen 5
V java.util.Stack Java Basics - Anfänger-Themen 9
K Stack und immer gleiches Objekt Java Basics - Anfänger-Themen 11
kulturfenster Stack / Queue Implementationen Java Basics - Anfänger-Themen 11
S Stack einlesen. Java Basics - Anfänger-Themen 2
E Stack kann nicht implimentiert werden Java Basics - Anfänger-Themen 11
E Eigene Stack Klasse schreiben Java Basics - Anfänger-Themen 12
J Stack Java Basics - Anfänger-Themen 3
K min-int-Wert in'nem Stack Java Basics - Anfänger-Themen 8
L Stack UpnRechner Java Basics - Anfänger-Themen 4
B Stack mit Bildern füllen Java Basics - Anfänger-Themen 2
B Stack mit Strings in zufälliger Reihenfolge füllen Java Basics - Anfänger-Themen 4
J Stack, der Integer-Zahlen enthält Java Basics - Anfänger-Themen 3
K Array Stack Java Basics - Anfänger-Themen 6
O Stack-Klasse Java Basics - Anfänger-Themen 7
S Stack mit Arrays Java Basics - Anfänger-Themen 3
T generischer stack Java Basics - Anfänger-Themen 3
H Stack und Queue Java Basics - Anfänger-Themen 6
M Stack SetValTop Java Basics - Anfänger-Themen 6
G Die Klasse Stack selber schreiben. Java Basics - Anfänger-Themen 2
F Klammertest mit Stack implementieren Java Basics - Anfänger-Themen 5
X Stack Java Basics - Anfänger-Themen 14
J Morgen Java-Klausur. Stack, Heap, Method-Area Java Basics - Anfänger-Themen 2
H Unterschied zwischen Stack und Array Java Basics - Anfänger-Themen 3
F MergeSort iterativ mit Hilfe von Stack Java Basics - Anfänger-Themen 5
S stack Java Basics - Anfänger-Themen 3
S Stack invertieren Java Basics - Anfänger-Themen 14
S Stack-Operationen Java Basics - Anfänger-Themen 59
S Stack.pop() wie genau funktioniert das? Java Basics - Anfänger-Themen 3
A Stack, Frage zur Methode push Java Basics - Anfänger-Themen 4
C Anzahl der Elemente auf einem Stack Java Basics - Anfänger-Themen 4
D Stack chaos Java Basics - Anfänger-Themen 2
megachucky kleines problem mit nem STACK Java Basics - Anfänger-Themen 8
I Stack ist auf einmal empty Java Basics - Anfänger-Themen 3
R Beispiele für Stack & Visualisierung Java Basics - Anfänger-Themen 2
R Stack: Wieso funktioiert das? Java Basics - Anfänger-Themen 2
B eine kleine leichte aufgabe mit einem stack programmieren Java Basics - Anfänger-Themen 2
N Stack-Probleme Java Basics - Anfänger-Themen 2
K Stack Overflow Java Basics - Anfänger-Themen 2
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben