# Liste



## Shantox (31. Mai 2016)

Hallo 

Folgende Aufgabenstellung:
Gegeben: Folgende Datenstruktur einer verketteten Liste:

```
public class Liste
{
    private Element anfang;
    public class Element {
        int wert;
        Element naechstes;
      
        public Element(int wert) {
            this.wert = wert;
        }
    }
```

Gesucht:
Methode in der Klasse Liste, die das letzte Element der Liste findet und zurückgibt.

Ich stehe gerade auf dem Schlauch... Kann mir wer weiterhelfen?

MfG


----------



## Joose (31. Mai 2016)

Die Liste hat ein Attribut, welches den Anfang der Liste darstellt.
Diese Element kann eine Referenz auf das nächste Element haben oder eben nicht. Solange es ein nächstes Element gibt ist das Ende der Liste nicht erreicht.


----------



## Shantox (31. Mai 2016)

Das habe ich schon größtenteils verstanden. Wie implementiere ich das aber? Ich hätte eine Idee, aber diese würde nur funktionieren, wenn naechstes static wäre.


----------



## Jardcore (31. Mai 2016)

Fange doch erstmal mit dem Methodenrumpf an und arbeite dich weiter vor.

```
public Element getLastElement() {
    Element element = anfang;
    // Logik
    return element;
}
```

Die Logik hat dir Joose schon beschrieben... Du fängst am Anfang an und gehst bis zum Ende, das Element bei dem "naechstes == null" (Kein nächstes hat) ist ist das letzte Element der Liste.


----------



## Joose (31. Mai 2016)

Shantox hat gesagt.:


> Ich hätte eine Idee, aber diese würde nur funktionieren, wenn naechstes static wäre.



Was wäre denn deine Idee? Vielleicht ist diese ja nicht mal so weit weg von der Lösung


----------



## Shantox (31. Mai 2016)

```
if(anfang <= naechstes) {
anfang++;
}
return anfang;
```

So. aber ich glaube das ist kompletter Schwachsinn


----------



## Shantox (31. Mai 2016)

```
Element element = anfang;
        if(element + naechstes != null) {
            element++;
        }
        if(element + naechstes == null) {
            return element;
        }
```

Ich glaube, das kommt der Sache ein bisschen näher als das obere.


----------



## Joose (31. Mai 2016)

Element ist eine Klasse. Was ist deiner Meinung nach das Ergebnis wenn du 2 Objekte von Element addierst?

Kleiner Tipp: Du willst die selbe Prüfung öfters wiederholen, solange bist du etwas zutrifft -> klingt ganz nach einer Schleife 

PS: Bitte verwende die Code-Tags! [code=java] ... dein code ... [/code]


----------



## Shantox (31. Mai 2016)

Das würde doch gar nicht gehen oder? Dies würde eben nur mit Zahlen funktionieren, aber element und naechstes haben den Datentyp Element. 
Ich bin zu dumm dafür...


----------



## Jardcore (1. Jun 2016)

Shantox hat gesagt.:


> Ich bin zu dumm dafür...


Das stimmt nicht, man braucht nur ein bisschen Übung. Wenn man schon öfter ähnliche Dinge programmiert hat wird es einfacher. Es ist noch kein Meister vom Himmel gefallen.


```
public Element getLastElement(){
   Element element = anfang;
   // Suche solange bis das Element keinen Nachfolger hat, und somit das letzte Element ist.
   while(element.naechstes != null) {

       // hier fehlt noch was      

   }
   return element;
}
```

Mit dem . in element.naechstes, bekommst du die Reference auf das Objekt welches an der Adresse hinterlegt ist.
Wie sieht eigentlich deine Einfüge-Methode aus?


----------

