# BlueJ Stacks Bahnhof



## Gues (11. Jan 2014)

Hallo,

kann mir bitte jemand bei dem Problem helfen? Habe schon alles versucht und auch schon in Google gesucht, aber nichts gefunden..


```
public class Wagen
{
    //Bezugsobjekte
    Stack Startgleis;
    Stack Hilfsgleis;
    Stack Rangierplatz;
    Stack Zielgleis;
    
    //Attribute
    int Wagennummer;
    
    //Konstruktor
    public Wagen(int Wagennummer)
    {
        new Wagen(5);
        new Wagen(3);
        new Wagen(8);
        new Wagen(2);
        new Wagen(1);
        new Wagen(7);
    }
    
    public int wert()
    {
        return Wagennummer;
    }
    
    public void rangiere()
    {
        if(!Startgleis.isEmpty())
        {
            if(Rangierplatz == null)
            {
                Rangierplatz.push(Startgleis.top());
            }
            else
            {
                if(Startgleis.top() > Rangierplatz.top())
                {
                    Rangierplatz() = pWagen.wert();
                }
            }
            Hilfsgleis.push(pWagen.wert());
            this.rangiere();
        }
    }
}
```


```
public class Stack 
{
    //Bezugsobjekte
    Knoten kenntErstes;
    Knoten kenntAktuelles;
    Object pObject;
    
    //Attribute
    
    //Konstruktor
    public Stack()
    {
        new Stack();
    }
    
    public boolean isEmpty()
    {
        if(this == null)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    
    public void push(Object pObject)
    {
        kenntErstes = pObject;
    }
    
    public void pop()
    {
        kenntErstes = kenntAktuelles;
        kenntAktuelles = kenntAktuelles.nachfolger();
    }
    
    public Object top()
    {
        return kenntErstes;
    }
}
```


```
public class Knoten
{
    //Bezugsobjekte
    private Object kenntInhalt;
    private Knoten kenntNachfolger;
    private Knoten kenntVorgaenger;
  
    //Konstruktor
    public Knoten(Object pInhalt)
    {
        kenntInhalt = pInhalt;
        kenntNachfolger = null;
        kenntVorgaenger = null;
    }
    
    public Object inhalt()
    {
        return kenntInhalt;
    }
    
    public Knoten nachfolger()
    {
        return kenntNachfolger;
    }
    
    public void setzeNachfolger(Knoten pNachfolger)
    {
        kenntNachfolger = pNachfolger;
    }
    
    public Knoten vorgaenger()
    {
        return kenntVorgaenger;
    }
    
    public void setzeVorgaenger(Knoten pVorgaenger)
    {
        kenntVorgaenger = pVorgaenger;
    }
}
```


```
public class Liste
{
    //Bezugsobjekte
    Knoten kenntErstes;
    Knoten kenntAktuelles;
    
    //Attribute
    
    //Konstruktor
    public void AllgemeineListe()
    {
        kenntErstes = null;
        kenntAktuelles = null;
    }
    
    public void next()
    {
        kenntAktuelles = kenntAktuelles.nachfolger();
    }
    
    public void zumAnfang()
    {
        kenntAktuelles = kenntErstes;
    }
    
    public Object gibAktuelles()
    {
        return kenntAktuelles.inhalt();
    }
    
    public void loescheAktuelles()
    {
        if(kenntAktuelles == kenntErstes)
        {
            kenntErstes = kenntErstes.nachfolger();
            kenntAktuelles = kenntErstes;
        }
        else
        {
            Knoten lKnoten = kenntAktuelles;
            this.zumAnfang();
            while(kenntAktuelles.nachfolger() != lKnoten)
            {
                this.next();
            }
            kenntAktuelles.setzeNachfolger(lKnoten.nachfolger());
        }
    }
}
```


----------



## turtle (12. Jan 2014)

Welches Problem?


----------



## Wishmaster51 (12. Jan 2014)

Ein Problem sehe ich schonmal hier:
	
	
	
	





```
//Konstruktor
    public Wagen(int Wagennummer)
    {
        new Wagen(5);
        new Wagen(3);
        new Wagen(8);
        new Wagen(2);
        new Wagen(1);
        new Wagen(7);
    }
```
So, wie hier die Objekte erzeugt werden, endet dies in einer Endlosrekursion. Zudem werden die Referenzen nirgens gespeichert.


----------

