Lineare listen verkettung

Sandro95

Bekanntes Mitglied
Guten Abend , ich weiß habe viele fragen sorry dafür:D

Bei mir funktioniert die Verkettung iwie nicht , die 12 wird übersprungen und bei der iter() Methode komme ich in einer endlosschleife ..
Bei der verkettung ist das doch theortischeinfach , von der ersten liste this,ende.nächster = neu.anfang und this.ende=neu.ende

Vergisst die anderen Methoden habe viele mehrfach als Übung also geht es hierbei um die Methode verkeeeetten() :)

Java:
  public class Link {
 
    public int wert ;
    public Link nächster;
 
    public Link(int wert , Link nächster) {
        this.wert=wert;
        this.nächster=nächster;
    }

}

 
public class Liste {

    public Link anfang;
    public Link ende;

    public Liste(Link anfang) {
        this.anfang = anfang;
        this.ende = anfang;
    }

    public void add(Link neu) {

        if (this.anfang == null) {
            this.anfang = neu;
            this.ende=neu;
        } else {
            this.ende.nächster = neu;
            ende = ende.nächster;
        }

    }

    public void iter() {
        Link a = anfang;

        while (a != null) {

            System.out.print(a.wert + " ");

            a = a.nächster;
        }

    }

    public void anzEl() {
        Link a = anfang;
        int count = 0;

        while (a != null) {

            ++count;
            a = a.nächster;
        }
        System.out.println("Die liste besitzt " + count + " an Elementen");
    }

    public void fügeWertein(int value) {
        Link neu = new Link(value,null);
        Link a = anfang;
     
        while(a.nächster!=null) {
         
            if(a.wert==value) {
                System.out.println("Wert schon vorhanden");
                return;
             
            }
            a=a.nächster;
        }
        a.nächster=neu;
     
    }
 
 
 
     

    public boolean findWert(int wert) {

        Link a = anfang;

        while (a != null) {

            if (a.wert == wert) {
                return true;
            }

            a = a.nächster;

        }
        return false;

    }

    public void verketten(Liste neu) {

        this.ende.nächster = neu.anfang;
        this.ende = neu.ende;

    }

    public Liste kopieren(Liste alt) {
        Link a = anfang;

        Liste neu = new Liste(a);

        while (a != null) {

            System.out.print(a.wert + " ");
            a = a.nächster;
        }
        return neu;

    }

    public void aaaad(Link neu) {

        if (this.anfang == null) {
            this.anfang = neu;
        }
        if (this.anfang != null) {
            this.ende.nächster = neu;
            this.ende = ende.nächster;
        }
    }

    public void aaaaaaaaaaad(int wert) {
        Link neu = new Link(wert, null);

        if (this.anfang == null) {
            this.anfang = neu;
        } else {
            this.ende.nächster = neu;
            this.ende = ende.nächster;
        }

    }

    public Liste coooopy() {
        Link a = anfang;

        Liste neu = new Liste(a);

        while (a != null) {

            System.out.print(a.wert + " ");
            a = a.nächster;
        }
        return neu;

    }
    public void loescheWert(int wert) {
     
        Link a = anfang ;
     
        while(a.nächster!=null ) {
         
            if(a.wert==wert) {
                try {
                    a.nächster=a.nächster.nächster;

                 
                }
                catch(Exception e) {
                    a.nächster=null;
                    ende=a;
                }
            }
            a=a.nächster;
        }
    }
 
    public void aaaaaaaaddd(int wert) {
        Link neu = new Link(wert,null);
     
        if(this.anfang==null) {
            this.anfang=neu;
            this.ende=neu;
        }
        else {
            this.ende.nächster=neu;
            this.ende=this.ende.nächster;
         
         
        }
    }
    public void verkeeeetten(Liste neu) {
     
        if(this.anfang==null) {
            this.anfang=neu.anfang;
        }
        else {
            this.ende.nächster=neu.anfang;
            this.ende=neu.ende;
         
            System.out.print(this.ende.nächster.wert + " ");
            System.out.print(this.ende.wert+ " ");
         
            neu.anfang=null;
            neu.ende=null;
         
         

         
        }
     
     
     
    }

}

public class Main {

    public static void main(String[] args) {
        Link eins = new Link(1, null);
        Link zwei = new Link(2, null);
        Link drei = new Link(1, null);
     
        Link a = new Link(100, null);
        Link b = new Link(12, null);
        Link c = new Link(3, null);
     
        Liste list = new Liste(eins);
        Liste list2 = new Liste(a);
     
        list.add(eins);
        list.add(zwei);
        list.add(drei);
        list.aaaad(c);
//        list.aaaaaaaaaaad(999);
     
        list2.add(b);
        list2.add(c);
     
        list.iter();
        System.out.println();
     
//        list.fügeWertein(2);
//        list.fügeWertein(100);
//        System.out.println();
////        System.out.println(list.findWert(2));
//        list.verketten(list2);
        list.iter();
//        System.out.println(        list2.kopieren(list)
//        list.iter();
//        list.coooopy();
//        list.loescheWert(2);
//        list.iter();
        list.verkeeeetten(list2);
        list.iter();
    }

}
 
Zuletzt bearbeitet von einem Moderator:

LimDul

Top Contributor
Wenn du es in richtige Code-Tags packt, wird es schöner:

Java:
public class Link {

public int wert ;
public Link nächster;

public Link(int wert , Link nächster) {
this.wert=wert;
this.nächster=nächster;
}

}


public class Liste {

public Link anfang;
public Link ende;

public Liste(Link anfang) {
this.anfang = anfang;
this.ende = anfang;
}

public void add(Link neu) {

if (this.anfang == null) {
this.anfang = neu;
this.ende=neu;
} else {
this.ende.nächster = neu;
ende = ende.nächster;
}

}

public void iter() {
Link a = anfang;

while (a != null) {

System.out.print(a.wert + " ");

a = a.nächster;
}

}

public void anzEl() {
Link a = anfang;
int count = 0;

while (a != null) {

++count;
a = a.nächster;
}
System.out.println("Die liste besitzt " + count + " an Elementen");
}

public void fügeWertein(int value) {
Link neu = new Link(value,null);
Link a = anfang;

while(a.nächster!=null) {

if(a.wert==value) {
System.out.println("Wert schon vorhanden");
return;

}
a=a.nächster;
}
a.nächster=neu;

}





public boolean findWert(int wert) {

Link a = anfang;

while (a != null) {

if (a.wert == wert) {
return true;
}

a = a.nächster;

}
return false;

}

public void verketten(Liste neu) {

this.ende.nächster = neu.anfang;
this.ende = neu.ende;

}

public Liste kopieren(Liste alt) {
Link a = anfang;

Liste neu = new Liste(a);

while (a != null) {

System.out.print(a.wert + " ");
a = a.nächster;
}
return neu;

}

public void aaaad(Link neu) {

if (this.anfang == null) {
this.anfang = neu;
}
if (this.anfang != null) {
this.ende.nächster = neu;
this.ende = ende.nächster;
}
}

public void aaaaaaaaaaad(int wert) {
Link neu = new Link(wert, null);

if (this.anfang == null) {
this.anfang = neu;
} else {
this.ende.nächster = neu;
this.ende = ende.nächster;
}

}

public Liste coooopy() {
Link a = anfang;

Liste neu = new Liste(a);

while (a != null) {

System.out.print(a.wert + " ");
a = a.nächster;
}
return neu;

}
public void loescheWert(int wert) {

Link a = anfang ;

while(a.nächster!=null ) {

if(a.wert==wert) {
try {
a.nächster=a.nächster.nächster;


}
catch(Exception e) {
a.nächster=null;
ende=a;
}
}
a=a.nächster;
}
}

public void aaaaaaaaddd(int wert) {
Link neu = new Link(wert,null);

if(this.anfang==null) {
this.anfang=neu;
this.ende=neu;
}
else {
this.ende.nächster=neu;
this.ende=this.ende.nächster;


}
}
public void verkeeeetten(Liste neu) {

if(this.anfang==null) {
this.anfang=neu.anfang;
}
else {
this.ende.nächster=neu.anfang;
this.ende=neu.ende;

System.out.print(this.ende.nächster.wert + " ");
System.out.print(this.ende.wert+ " ");

neu.anfang=null;
neu.ende=null;




}



}

}

public class Main {

public static void main(String[] args) {
Link eins = new Link(1, null);
Link zwei = new Link(2, null);
Link drei = new Link(1, null);

Link a = new Link(100, null);
Link b = new Link(12, null);
Link c = new Link(3, null);

Liste list = new Liste(eins);
Liste list2 = new Liste(a);

list.add(eins);
list.add(zwei);
list.add(drei);
list.aaaad(c);
// list.aaaaaaaaaaad(999);

list2.add(b);
list2.add(c);

list.iter();
System.out.println();

// list.fügeWertein(2);
// list.fügeWertein(100);
// System.out.println();
//// System.out.println(list.findWert(2));
// list.verketten(list2);
list.iter();
// System.out.println( list2.kopieren(list)
// list.iter();
// list.coooopy();
// list.loescheWert(2);
// list.iter();
list.verkeeeetten(list2);
list.iter();



}

}
 

Sandro95

Bekanntes Mitglied
Wenn du es in richtige Code-Tags packt, wird es schöner:

Java:
public class Link {

public int wert ;
public Link nächster;

public Link(int wert , Link nächster) {
this.wert=wert;
this.nächster=nächster;
}

}


public class Liste {

public Link anfang;
public Link ende;

public Liste(Link anfang) {
this.anfang = anfang;
this.ende = anfang;
}

public void add(Link neu) {

if (this.anfang == null) {
this.anfang = neu;
this.ende=neu;
} else {
this.ende.nächster = neu;
ende = ende.nächster;
}

}

public void iter() {
Link a = anfang;

while (a != null) {

System.out.print(a.wert + " ");

a = a.nächster;
}

}

public void anzEl() {
Link a = anfang;
int count = 0;

while (a != null) {

++count;
a = a.nächster;
}
System.out.println("Die liste besitzt " + count + " an Elementen");
}

public void fügeWertein(int value) {
Link neu = new Link(value,null);
Link a = anfang;

while(a.nächster!=null) {

if(a.wert==value) {
System.out.println("Wert schon vorhanden");
return;

}
a=a.nächster;
}
a.nächster=neu;

}





public boolean findWert(int wert) {

Link a = anfang;

while (a != null) {

if (a.wert == wert) {
return true;
}

a = a.nächster;

}
return false;

}

public void verketten(Liste neu) {

this.ende.nächster = neu.anfang;
this.ende = neu.ende;

}

public Liste kopieren(Liste alt) {
Link a = anfang;

Liste neu = new Liste(a);

while (a != null) {

System.out.print(a.wert + " ");
a = a.nächster;
}
return neu;

}

public void aaaad(Link neu) {

if (this.anfang == null) {
this.anfang = neu;
}
if (this.anfang != null) {
this.ende.nächster = neu;
this.ende = ende.nächster;
}
}

public void aaaaaaaaaaad(int wert) {
Link neu = new Link(wert, null);

if (this.anfang == null) {
this.anfang = neu;
} else {
this.ende.nächster = neu;
this.ende = ende.nächster;
}

}

public Liste coooopy() {
Link a = anfang;

Liste neu = new Liste(a);

while (a != null) {

System.out.print(a.wert + " ");
a = a.nächster;
}
return neu;

}
public void loescheWert(int wert) {

Link a = anfang ;

while(a.nächster!=null ) {

if(a.wert==wert) {
try {
a.nächster=a.nächster.nächster;


}
catch(Exception e) {
a.nächster=null;
ende=a;
}
}
a=a.nächster;
}
}

public void aaaaaaaaddd(int wert) {
Link neu = new Link(wert,null);

if(this.anfang==null) {
this.anfang=neu;
this.ende=neu;
}
else {
this.ende.nächster=neu;
this.ende=this.ende.nächster;


}
}
public void verkeeeetten(Liste neu) {

if(this.anfang==null) {
this.anfang=neu.anfang;
}
else {
this.ende.nächster=neu.anfang;
this.ende=neu.ende;

System.out.print(this.ende.nächster.wert + " ");
System.out.print(this.ende.wert+ " ");

neu.anfang=null;
neu.ende=null;




}



}

}

public class Main {

public static void main(String[] args) {
Link eins = new Link(1, null);
Link zwei = new Link(2, null);
Link drei = new Link(1, null);

Link a = new Link(100, null);
Link b = new Link(12, null);
Link c = new Link(3, null);

Liste list = new Liste(eins);
Liste list2 = new Liste(a);

list.add(eins);
list.add(zwei);
list.add(drei);
list.aaaad(c);
// list.aaaaaaaaaaad(999);

list2.add(b);
list2.add(c);

list.iter();
System.out.println();

// list.fügeWertein(2);
// list.fügeWertein(100);
// System.out.println();
//// System.out.println(list.findWert(2));
// list.verketten(list2);
list.iter();
// System.out.println( list2.kopieren(list)
// list.iter();
// list.coooopy();
// list.loescheWert(2);
// list.iter();
list.verkeeeetten(list2);
list.iter();



}

}

danke für die Anmerkung , kannst du mir vlt weiterhelfen?
 

LimDul

Top Contributor
Du fügst c sowohl der list, also auch der list2 hinzu - das geht schief, weil dann c in beiden drin ist und damit deine Verkette Liste kaputt geht.
 
K

kneitzel

Gast
liegt es nur daran ?
Ja, denn du hast dann ja mehrere Elemente, die auf die 3 verweisen. Das ist noch ok, so lange die 3 das letzte Elemente ist.

Du hast dann die zwei Listen:
1 2 1 3
100 12 3

Aber nun fügst Du die aneinander. Das machst Du auch soweit korrekt, aber da ein Element in beiden Listen enthalten ist, hast Du dann einen Verweis vom letzten Element 3 auf das Element 100.

Diese Problematik kann entstehen, da Link nach außen sichtbar ist und benutzt wird. Bei so Klassen ist die Speicherung rein intern. Du fügst also nicht Link Elemente hinzu sondern nur Werte. Dann kannst Du ein Link Element nicht in mehrere Listen packen und du kannst die Struktur auch nicht von außen zerhauen. Das wäre also etwas, das man nach außen (aus gutem Grund) versteckt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Was könnten typische Prüfungsaufgaben zum Thema lineare, verkettete Listen sein? Java Basics - Anfänger-Themen 5
L Lineare Listen Java Basics - Anfänger-Themen 2
T Lineare Listen: sortiertes Einfügen Java Basics - Anfänger-Themen 6
Chucky Lineare Listen Programm Verständnisproblem Java Basics - Anfänger-Themen 38
NoP-ay Lineare Rekurison gibAnzahl Java Basics - Anfänger-Themen 6
amelie123456 Lineare Suche / Binäre Suche Java Basics - Anfänger-Themen 2
V_Fynn03 Beliebiges Element in einer Liste löschen (Java)(Lineare Datenstrukturen) Java Basics - Anfänger-Themen 9
V_Fynn03 Lineare Datenstrukturen Element löschen? Java Basics - Anfänger-Themen 2
S Java Lineare-Suche Zeitmessung Java Basics - Anfänger-Themen 5
S Java Lineare Suche Java Basics - Anfänger-Themen 1
B lineare und schlichte Rekursion Java Basics - Anfänger-Themen 1
A Lineare Rekursion Java Basics - Anfänger-Themen 6
R Klassen Die lineare Datenstruktur Queue Java Basics - Anfänger-Themen 3
N Array, lineare Suche, binäre Suche, Programm bleibt unerwartet stehen... Java Basics - Anfänger-Themen 6
L Einfache Lineare Suche Java Basics - Anfänger-Themen 7
S Lineare Gleichung lösen Java Basics - Anfänger-Themen 1
S Datentypen nicht lineare STATISCHE Datenstruktur? Java Basics - Anfänger-Themen 10
B lineare Gleichung programmieren Java Basics - Anfänger-Themen 2
P Lineare Suche im Array Java Basics - Anfänger-Themen 5
C Lineare Rekursion -> iterative Schleife Java Basics - Anfänger-Themen 3
B Lineare Suche Java Basics - Anfänger-Themen 5
B endrekursion und lineare rekursion Java Basics - Anfänger-Themen 4
U Lineare Suche in einem Array Java Basics - Anfänger-Themen 3
I Lineare Gleichungssysteme lösen -> Problem Java Basics - Anfänger-Themen 3
M lineare Suche Java Basics - Anfänger-Themen 12
G verkettete lineare Liste Java Basics - Anfänger-Themen 2
D Lineare Kongruenz Java Basics - Anfänger-Themen 4
B Warum hat dieser einfache Algorithmus lineare Laufzeit? Java Basics - Anfänger-Themen 3
G Array - lineare Liste Java Basics - Anfänger-Themen 2
D Listen in Listen in Listen ... ??? Java Basics - Anfänger-Themen 2
XWing listen Java Basics - Anfänger-Themen 7
FunkyPhil94 addLast und addFirst bei Listen Java Basics - Anfänger-Themen 6
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
Buroto Threads Verschiedene .txt Dateien Auf Listen und Verbinden Java Basics - Anfänger-Themen 3
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
S Listen Java Basics - Anfänger-Themen 12
S Listen , Nodes am ende anängen Java Basics - Anfänger-Themen 6
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
M Java Listen Java Basics - Anfänger-Themen 4
V einfach verkettete Listen Java Basics - Anfänger-Themen 10
A PhoneBook mit verketteten listen Java Basics - Anfänger-Themen 48
F ich brauche Hilfe bei Listen Java Basics - Anfänger-Themen 13
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
G Java Listen und Iterator Java Basics - Anfänger-Themen 2
S Erklaerung Listen Java Basics - Anfänger-Themen 27
J Implementierung Listen-ADT Java Basics - Anfänger-Themen 131
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
L Skip Listen Java Basics - Anfänger-Themen 5
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
L Wie testet man (selbstgeschriebene) Listen sinnvoll? Java Basics - Anfänger-Themen 2
F Problem mit Listen Java Basics - Anfänger-Themen 5
J Listen Operationen Java Basics - Anfänger-Themen 4
O Unterschied Arrays, Listen, Mengen Java Basics - Anfänger-Themen 24
J Eine Liste von Listen erstellen Java Basics - Anfänger-Themen 11
A Sortierte Listen Java Basics - Anfänger-Themen 4
L Datenstrukturen/ Listen Java Basics - Anfänger-Themen 17
L Listen und Felder Java Basics - Anfänger-Themen 2
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
R Arrays und Listen Java Basics - Anfänger-Themen 1
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
F Multidimensionale Listen Java Basics - Anfänger-Themen 3
F Wie String in unterschiedliche Listen teilen Java Basics - Anfänger-Themen 7
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
T Objekte in Listen vererben Java Basics - Anfänger-Themen 3
A Klassen Klassen und Listen... Java Basics - Anfänger-Themen 5
Hacer Operationen einfach verketteter Listen Java Basics - Anfänger-Themen 22
S Methoden Vergleichen von zwei Listen in der Geschwindigkeit von O(n+m) Java Basics - Anfänger-Themen 32
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
C Listen Java Basics - Anfänger-Themen 3
C Zwei Listen verbinden Java Basics - Anfänger-Themen 1
C Zahlen merken mit Hilfe von Arrays/Listen Java Basics - Anfänger-Themen 2
E Feld von verketteten Listen Java Basics - Anfänger-Themen 11
T Überprüfung einer Aufgabe zu verketteten Listen Java Basics - Anfänger-Themen 5
S Liste mit Objekten und Listen Java Basics - Anfänger-Themen 9
JarJarBigs Frage zu Listen Java Basics - Anfänger-Themen 2
N verkettete Listen Java Basics - Anfänger-Themen 4
O Listen sort-Methode Java Basics - Anfänger-Themen 1
I Listen sortieren bei mehreren Listen zu einer Java Basics - Anfänger-Themen 2
S Listen Objekte nach LocalDateTime sortieren Java Basics - Anfänger-Themen 2
D Methoden Listen generieren Java Basics - Anfänger-Themen 4
A Sichtbarkeit in Methoden/Listen Java Basics - Anfänger-Themen 3
M verkettete Listen Java Basics - Anfänger-Themen 1
D Klausur Vorbereitung: Listen, Rekursion, Bäume & Vererbung Java Basics - Anfänger-Themen 3
S Vergleich von Listen Java Basics - Anfänger-Themen 6
I Zwei Listen vergleichen Java Basics - Anfänger-Themen 2
M Listen erstellen mit unterschiedlichen Reihenfolgen Java Basics - Anfänger-Themen 3
I Zwei Listen vergleichen bei n:m Beziehung Java Basics - Anfänger-Themen 2
I Zwei Listen: Wenn nicht vorhanden löschen Java Basics - Anfänger-Themen 4
I Prüfen von zwei Listen Java Basics - Anfänger-Themen 1
K Interface Generics, Interfaces und Listen - ich bin verwirrt. Java Basics - Anfänger-Themen 7
L Best Practice Alle Kombinationen aus Listenelementen, Anzahl Listen unterschiedlich Java Basics - Anfänger-Themen 6
llabusch Verkette Listen - Einfach und Doppelt Java Basics - Anfänger-Themen 3
S Unsortierte Listen - Frage zur "Verkettung" Java Basics - Anfänger-Themen 1
I Zwei Listen vergleichen Java Basics - Anfänger-Themen 7
I Listen, for - Schleifen Java Basics - Anfänger-Themen 8
P Listen Size stimmt nicht Java Basics - Anfänger-Themen 5
O Objekt Listen serialisierung und deserialisieren Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben