Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben

G

gegner1111

Mitglied
Servus Leute,
ich habe erst vor kurzem mit Java lernen angefangen, also hab ich noch nicht viel Erfahrung...
Zu meinem Problem: Ich will eine eigene verkettete Liste schreiben, die mir 10 Int-Werte einfügt.
Hierfür erzeuge ich mit einer for-Schleife jedes mal ein neues Element (newEle) welches ich dann den Wert 8*i (i=Anzahl des aktuellen Schleifendurchgangs) zuweise.
Doch bei der Ausgabe der fertigen Liste gibt mir das System nur "0"er und als letztes Element die 80 (8*10=80 würde passen) aus.
Woran liegt das? Habe ich den Verweis zwischen den einzelnen Kettenglieder falsch gemacht?
Denn mir kommt es so vor, als würde mein Start-Element gleich auf das letzte/10te Element (Wert 80) verweisen.
Danke schonmal im Voraus!!

Liste.java
Java:
public class List {
    ListElement start;
    int counter = 0;
   
    public List()
    {
        start = new ListElement(0);
    }
   
    public void insertLast(int s)
    {
            int übergabe= s;
            ListElement newEle = new ListElement(übergabe);
            start.next = newEle;
            counter +=1;
           

    }
   
    public void delete(int n)
    {
        if (n<1)
        {
            return;
        }
        ListElement nth = findIndex(n-1);
        if (nth == null)
        {
            return;
        }
       
        ListElement pre = findIndex(n-1);
        pre.next = nth.next;
    }
   
   
    public int get(int n)
    {
       
        if(findIndex(n) == null)
        {
            return 0;
        }
        else
        {
            return findIndex(n).value;
        }
       
    }
   

   
    private ListElement findIndex(int n) //ADRESSE DES ELEMENTS
    {
        if(n < 0)
        {
            return null;
        }
        ListElement iterator = start;
        for ( int i=0; i<n; ++i)
        {   
            if (iterator.hasNext())
            {
                iterator = iterator.next;
            }
            else
            {
                return null;
            }
        }

        return iterator;
    }
}

ListElement.java
Code:
public class ListElement {

    int value;
    ListElement next;
   
    public ListElement(int s)
    {
        value = s;
        next = null;
    }
   
    public boolean hasNext()
    {
        if(this.next == null)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
}

Die Main Datei:
Code:
public class Beispielprogramm
{
    public static void main(String[] args)
    {
        List l= new List();   
       
        for (int i=1; i<=10; ++i)
        {
                l.insertLast(8*i);

        }
       
        l.delete(3);

        for (int i=l.counter; i>=1; --i)
        {
             System.out.print("Liste: " + l.get(i));
        }
   
        System.out.println("Länge: "+l.counter);
       
    }
}
 
G

gegner1111

Mitglied
Ja. Mit insertLast()setzt du das neue Element als Nachfolger von start. Einen eventuell bereits vorhandenen Nachfolger von start verwirfst du dadurch.

Okay danke Meniskusschaden!
ich hätte dann insertLast() folgendermaßen geschrieben:
Code:
    public void insertLast(int s)
    {
            int übergabe= s;
            ListElement newEle = new ListElement(übergabe);
            if(counter == 0)
            {
                start.next = newEle;
                counter +=1;
            }
           
            else
            {
                newEle.next = newEle;
                counter +=1;
            }
           
    }

denn so wird ja dann jedes neu erzeugte "newEle"-Element mithilfe des Counters auf das nächste Element zugewiesen.
Oder wie würdet ihr das machen? denn meine Ausgabe ist nicht besser...
Systemausgabe.png
 
M

Meniskusschaden

Top Contributor
Nein, falls counter nicht gleich 0 ist, setzt du das neue Element jetzt ja als seinen eigenen Nachfolger (erzeugst also einen Zyklus), hängst es aber nicht in die Liste ein. Vorher hast du also nur das letzte Element eingefügt, jetzt fügst du nur das erste ein.
Du solltest das einfach mal auf Papier durchspielen und dann genau so programmieren.
 
G

gegner1111

Mitglied
Stimmt :confused:
habs mir mal aufgemalt, und jetzt kam mir noch ne frage und zwar jedes mal wenn ich
Code:
ListElement newEle = new ListElement(übergabe);
ausführe, erstellt es ja ein neues Element.
Das neu erzeugte Element bekommt ja dann immer den selben Namen "newEle" zugeordnet oder?
kann ich die erzeugten Elemente dann irgendwie explizit ansprechen?
Weil wenn ich zum Beispiel nur "newEle =1;" schreib dann sprech ich ja theoretisch alle erzeugten Elemente an und weise ihnen die "1" zu.
 
M

Meniskusschaden

Top Contributor
ausführe, erstellt es ja ein neues Element.
Ja.
Das neu erzeugte Element bekommt ja dann immer den selben Namen "newEle" zugeordnet oder?
Der Variablen newEle wird dadurch eine Referenz auf das neue Element zugewiesen. Wenn du ihr ein weiteres neues Element zuweisen würdest, würde sie danach nur noch das neue Element referenzieren und nicht mehr das alte. Allerdings kommt es dazu nicht, denn die Variable newEle existiert nur solange, bis die Methode insertLast() beendet wird. Danach wird sie gelöscht. Beim nächsten Methodenaufruf wird wieder eine neue Variable newEle erzeugt.
Weil wenn ich zum Beispiel nur "newEle =1;"
Das geht gar nicht, weil newEle vom Typ ListElement ist und 1 vom Typinteger.
dann sprech ich ja theoretisch alle erzeugten Elemente an
Nein, du kannst immer nur das Element darüber ansprechen, dass zu dem Zeitpunkt über newElereferenziert wird.

Du kannst dir die Liste als einen Zug vorstellen, an dessen Ende du mittels inserLast() einen zusätzlichen Wagon ankoppeln willst.
Bei deinem ersten Versuch hast du den neuen Wagon immer an die Lok angekoppelt und dadurch einen evtl. vorhanden Wagon wieder abgekoppelt.
Bei deinem zweiten Versuch hast du den ersten Wagon an die Lok gekoppelt. Beim zweiten Wagon hast du lediglich mit einem langen Seil seine Vorderseite mit seiner Hinterseite verbunden. Bei allen übrigen ebenso.

Du mußt einfach zum bisher letzten Wagon des Zuges gehen und dort den neuen Wagon anhängen. Das dafür nötige Prinzip hast du in findNext() bereits genutzt (wobei ich eine while-Schleife passender finde).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
A Doppelt verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 17
D Doppelt Verkettete Zirkular-Liste Java Basics - Anfänger-Themen 1
A Verkettete Liste Java Basics - Anfänger-Themen 2
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
L verkettete Liste Java Basics - Anfänger-Themen 15
scratchy1 doppelt verkettete Liste testen Java Basics - Anfänger-Themen 8
R Methoden Entferne alle identische Knoten (Typ String) aus verkettete Liste Java Basics - Anfänger-Themen 8
C Methoden Über eine einfach verkettete Liste Java Basics - Anfänger-Themen 8
H Verkettete Liste Java Basics - Anfänger-Themen 7
N Verkettete liste rückwärts ausgeben Java Basics - Anfänger-Themen 5
K Verkettete Liste und seine Methoden Java Basics - Anfänger-Themen 1
N Verkettete Liste implementieren Java Basics - Anfänger-Themen 5
O Einfach verkettete Liste - Revert Methode Java Basics - Anfänger-Themen 1
S Einfach verkettete Liste Element an bestimmter Position einfügen Java Basics - Anfänger-Themen 24
B Doppelt Verkettete Liste - Ist alles gut so? Java Basics - Anfänger-Themen 3
C Verkettete Liste - sortiert einfügen Java Basics - Anfänger-Themen 7
R Erste Schritte Verkettete Liste will einfach nicht in meinen Schädel Java Basics - Anfänger-Themen 11
U Datentypen Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 13
J Methoden Doppelt verkettete Liste remove(Object) Java Basics - Anfänger-Themen 8
B OOP Über eine doppelt verkettete Liste iterieren Java Basics - Anfänger-Themen 4
hooked Verkettete Liste / linked list Java Basics - Anfänger-Themen 2
L Doppelt verkettete Liste Java Basics - Anfänger-Themen 6
J Eine Art verkettete Liste aber mit teils mehr als einem Nachfolger Java Basics - Anfänger-Themen 8
V Verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 3
R doppelt verkettete Liste aus Arrays erstellen Java Basics - Anfänger-Themen 1
K Einfach Verkettete Liste - addFirst() Java Basics - Anfänger-Themen 7
G 2 Aufgabe rund um eine verkettete Liste Java Basics - Anfänger-Themen 2
O Verkettete Liste Java Basics - Anfänger-Themen 10
E Methoden auf von Methoden erstellte Objekte zugreifen (verkettete Liste) Java Basics - Anfänger-Themen 10
X Einfach verkettete Liste, keine Fehlermeldung Programm friert ein Java Basics - Anfänger-Themen 4
S Doppelt verkettete Liste Java Basics - Anfänger-Themen 3
G Doppelt Verkettete Liste Java Basics - Anfänger-Themen 2
A Doppelt Verkettete Liste Java Basics - Anfänger-Themen 16
E doppelt verkettete liste Java Basics - Anfänger-Themen 10
V Verkettete Liste. Java Basics - Anfänger-Themen 7
X Einfach Verkettete Liste Java Basics - Anfänger-Themen 16
K Verkettete Liste - Methode entwerfen Java Basics - Anfänger-Themen 14
S Verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 12
B Insertionsort verkettete Liste Java Basics - Anfänger-Themen 4
B Stack in eine verkettete Liste pushen Java Basics - Anfänger-Themen 4
R verkettete liste ansEndeSchieben Java Basics - Anfänger-Themen 13
T Verkettete Liste Java Basics - Anfänger-Themen 14
A Klassen Innere Klassen, verkettete Liste Java Basics - Anfänger-Themen 9
B Zweifach-verkettete Liste umkehren Java Basics - Anfänger-Themen 6
X verkettete Liste Java Basics - Anfänger-Themen 13
E Datentypen Doppelt verkettete Liste Java Basics - Anfänger-Themen 10
P Einfügen in doppelt verkettete Liste Java Basics - Anfänger-Themen 7
kae verkettete Liste Java Basics - Anfänger-Themen 5
S Queue als doppelt verkettete Liste Java Basics - Anfänger-Themen 2
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
B OOP Verkettete Liste Java Basics - Anfänger-Themen 7
R verkettete liste Java Basics - Anfänger-Themen 5
M Verkettete Liste Java Basics - Anfänger-Themen 4
M verkettete liste Java Basics - Anfänger-Themen 7
N doppelt verkettete liste einfügen Java Basics - Anfänger-Themen 7
K Datentypen Einfach/Doppelt verkettete Liste Java Basics - Anfänger-Themen 4
N einfach verkettete liste fehler Java Basics - Anfänger-Themen 5
N einfach verkettete liste Java Basics - Anfänger-Themen 3
G verkettete Liste - invertieren Java Basics - Anfänger-Themen 2
B OOP Einfach verkettete Liste - rekursive Methoden Java Basics - Anfänger-Themen 1
B verkettete Liste Java Basics - Anfänger-Themen 8
S zyklisch verkettete Liste erstellen Java Basics - Anfänger-Themen 3
S einfach verkettete Liste Java Basics - Anfänger-Themen 19
O Stack Implementierung als verkettete Liste Java Basics - Anfänger-Themen 8
W Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 2
T Einfach verkettete Liste: Wie Elemente löschen? Java Basics - Anfänger-Themen 4
J verkettete Liste Java Basics - Anfänger-Themen 2
D Einfach verkettete Liste Java Basics - Anfänger-Themen 20
DasDogma Verkettete Liste - Element löschen Java Basics - Anfänger-Themen 2
H Verkettete Liste Java Basics - Anfänger-Themen 5
M verkettete Liste auslesen Java Basics - Anfänger-Themen 7
K eigene verkettete Liste Java Basics - Anfänger-Themen 4
G Doppelt verkettete, generische Liste Java Basics - Anfänger-Themen 11
A Eine verkettete Liste Java Basics - Anfänger-Themen 43
G verkettete lineare Liste Java Basics - Anfänger-Themen 2
L verkettete Liste - Ausgabeproblem Java Basics - Anfänger-Themen 2
G Wie kann ich eine verkettete Liste in ein JTable einfügen? Java Basics - Anfänger-Themen 7
D doppelt verkettete Liste Java Basics - Anfänger-Themen 16
S Doppelt Verkettete Liste Java Basics - Anfänger-Themen 7
R ArrayList Objekt -> verkettete Liste Java Basics - Anfänger-Themen 4
R verkettete Liste Java Basics - Anfänger-Themen 13
R verkettete Liste in und aus Datei Java Basics - Anfänger-Themen 5
M Doppelt verkettete Liste Zeiger Vorgänger beim Einfügen Java Basics - Anfänger-Themen 2
J doppelt verkettete Liste Java Basics - Anfänger-Themen 5
L doppelt verkettete Liste Java Basics - Anfänger-Themen 6
C einfach verkettete Liste -> Elemente vertauschen Java Basics - Anfänger-Themen 2
0 Binärbaum als verkettete Liste Java Basics - Anfänger-Themen 3
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 12
G Dopplelt verkettete liste Java Basics - Anfänger-Themen 4
B Doppelt verkettete Liste Java Basics - Anfänger-Themen 16
R einfach verkettete Liste, intersect Java Basics - Anfänger-Themen 4
R Datentyp Ring - zyklisch doppelt verkettete Liste - HILFE! Java Basics - Anfänger-Themen 12
E einfach verkettete liste, nullPointerException Java Basics - Anfänger-Themen 5
S Queue als verkettete Liste Java Basics - Anfänger-Themen 9
R doppelt verkettete Liste Java Basics - Anfänger-Themen 8
F doppelt verkettete liste! Java Basics - Anfänger-Themen 8
M Verkettete Liste (schritt für schritt durchlauf) Java Basics - Anfänger-Themen 5
R doppelt verkettete azyklische Liste Java Basics - Anfänger-Themen 2
Z Zyklisch verkettete Liste Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Anzeige

Neue Themen


Oben