Eigene LinkedList Klasse

  • Themenstarter sehrVerzweifelterStudent
  • Beginndatum
Diskutiere Eigene LinkedList Klasse im Java Basics - Anfänger-Themen Bereich.
S

sehrVerzweifelterStudent

Bin in der Klausurvorbereitung und übe an "nicht eingekapselten Listenstrukturen".
Ich vermute dass damit etwa eine eigene LinkedList Klasse gemeint ist, die ich mit addElem usw erweitern darf.

Dazu habe ich folgenden Code geschrieben, ich bekomme aber Immer Länge = 0, warum?

Java:
public class myList <T> {
    
    private myElem<T> head;
    
    public myList() {
        head = null;
    }
    
    public int length() {
        int length=0;
        myElem<T>counter = new myElem<T>();
        if(head == null) {
            return 0;
        }
        head = counter;
        while(counter.next != null) {
            counter = counter.next;
            length++;
        }
        return length;
        
    }
    public void add(myElem<T> elem) {
    
        if(head == null) {
            head = elem;
            return;
        }
        myElem<T> counter = new myElem<T>();
        counter = head;
        while(counter.next != null) {
            counter = counter.next;
        }
        counter.next = elem;
        
    }
    
    public static void main(String[] args) {
        myList<Integer> list = new myList<Integer>();
        myElem<Integer> first = new myElem<Integer>();
        first.key = 1;
        myElem<Integer> second = new myElem<Integer>();
        second.key = 2;
        myElem<Integer> third = new myElem<Integer>();
        third.key = 3;
        
        list.add(first);
        list.add(second);
        
        System.out.println(list.length()); // => Hier bekomme ich immer "0" zurück :/

        
    }
}
Meine Element-Klasse sieht dazu so aus:
Java:
public class myElem <T> {
    public T key;
    public myElem<T> next;
}
 
S

sehrVerzweifelterStudent

Update: Habe soeben den Fehler gefunden: In length() Methode muss ich schreiben counter = head und nicht head = counter. Dennoch bekomme ich immer eine Länge zu kurz raus. Also in diesem Fall länge = 1 anstatt länge = 2
 
S

sehrVerzweifelterStudent

Habe jetzt einfach meinen Counter von Anfang an auf 1 gesetzt, falls es keinen head gibt wird ja 0 zurückgegeben. Ahja: Denkt ihr ich liege mit meiner Vermutung bezüglich der "nicht eingekapselten Listenstruktur" richtig, oder gibt es da noch naheliegenderes?
 
H

httpdigest

Was soll denn bei dir `myElem` sein? Wo soll das herkommen? Und warum ist das selbst auch nochmal generisch?
Unter "nicht eingekapselt" würde ich verstehen:
Java:
public class MeineListe<T> {
  private MeineListe<T> next;
  private T wert;
}
oder sogar noch einfacher (wenn man nur "MeinElement" Instanzen in einer Liste speichern will und nicht beliebige T's):
Java:
public class MeinElement {
  private MeinElement next;
  // ...weitere Felder von `MeinElement`...
}
(natürlich kann man bei letzterem eine `MeinElement`-Instanz nur in einer einzigen Liste speichern.)
 
Kirby_Sike

Kirby_Sike

Was mir auffällt:

Wieso deklarierst du nicht einfach eine Instanzvariable (length) und erhöhst diese jedesmal wenn ein neuesElement zur Liste hinzugefügt wird?
 
Thema: 

Eigene LinkedList Klasse

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben