Verkette Liste

thor_norsk

Bekanntes Mitglied
Guten Abend, ich verstehe die Aufgabe nicht richtig.


[CODE lang="java" title="Verkette Liste"]class Listenelement {

// Instanzvariable
String daten;
Listenelement naechster;

void setDaten (String datenNeue) {

daten = datenNeue;
naechster = null;
}

void anhaengen(String datenNeu) {

if (naechster == null) {

naechster = new Listenelement();
naechster.setDaten(datenNeu);
}
else
naechster.anhaengen(datenNeu);
System.out.println("Daten\t"+datenNeu+"\t wurden eingefügt.");

}

void ausgeben() {

System.out.println(daten);
if (naechster != null)
naechster.ausgeben();
}
}

public class ListeV3 {

public static void main(String[] args) {

Listenelement listenAnfang = new Listenelement();
listenAnfang.setDaten("Element1");

for (int element = 2; element < 4; element++)

listenAnfang.anhaengen("Element"+element);
listenAnfang.ausgeben();
}
}
[/CODE]

Ich versuche meine Gedanken zu spiegeln.
Frage 1) 2 Instanzvariablen werden vereinbart. String daten & Listenelement naechster und warum nicht String naechster ???

Jetzt versuche ich von der Methode main() aus, die Ausgabe zu erklären, die ich nicht richtig verstehe.

Neues Listenelement wird erzeugt : listenAnfang : Instanz der Klasse Listenelement
listenAnfang.setDaten("Element1"); führt zum Ergebnis: daten = "Element1" und naechster = null, somit wird listenAnfang der Wert ""Element1" zugewiesen.

Also: listenAnfang = "Element 1" & naechster = null; zur der Zeitpunkt?

Bevor ich mit der for - Schleife beginne, zeige ich euch die Ausgabe.

Daten Element2 wurden eingefügt.
Daten Element3 wurden eingefügt.
Daten Element3 wurden eingefügt.
Element1
Element2
Element3

ich verstehe nicht warum bei der for - Schleife die else Zweig ausgeführt wird, obwohl naechster = null ist ?
Es wäre sehr nett, wenn jemand mit einfachen Wörtern erklären könnte. Vor Allem wird die Methode wieder rekursiv wieder aufgerufen.

Ich bedanke mich im Voraus.
 
M

Mart

Gast
Java:
    void anhaengen(String datenNeu) {
    
    if (naechster == null) {           
        
        naechster = new Listenelement();     
        naechster.setDaten(datenNeu);       
        }
     else                             
        naechster.anhaengen(datenNeu);                           
        System.out.println("Daten\t"+datenNeu+"\t wurden eingefügt.");             
                                                                            
    }
die ausgabe passt nicht du hängst nur ein wenn der nächste null ist ansonsten latscht du weiter
weiter hab ichs noch incht angeschaut
 

Jw456

Top Contributor
1.) das ist eine Referenz Instanz auf ein neues Objekt von deiner Klasse.
Das wird ja bei anhängen mit new erstellt.

Bein anhägen wird ein neues Objekt erstellt dem alten Objekt (das in dem du gerade bist ) wird die neue ref übergeben. In den neuen Objekt wird der Sting gespeichert der dann keine ref hat.
 

thor_norsk

Bekanntes Mitglied
Die Methode ausgeben() ist ok . Wird solange rekursiv ausgeführt bis das letzte Element = null ist, was Listenende bedeutet nach meiner auffassung.
 
K

kneitzel

Gast
Frage 1) 2 Instanzvariablen werden vereinbart. String daten & Listenelement naechster und warum nicht String naechster ???
Weil Du eine Liste von mehreren Elementen haben willst. wenn naechster ein String wäre, dann könnte da nur ein String stehen- Aber Du willst ja vielleicht 100 Strings in der Liste haben. Und das geht dann nur mit einer dynamischen Anzahl Listenelemente.

Du hast Waggons, die fahren können. Wenn Du einen ersten Zug haben willst, musst Du einfach einen ersten Waggon nehmen (Listenelement) und das ist Dein Zuganfang (Listenanfang). Und den Container (Den String, den Du speichern kannst) kannst Du dann auf den Waggon laden.
Wenn Du nun noch einen Container mitnehmen willst, dann musst Du ans Ende des Zuges gehen, da einen neuen Waggon anhängen und da dann den Container aufladen.
Aber Du hängst natürlich hinten an den Waggon nur andere Waggons und nicht direkt einen Container!
 

Jw456

Top Contributor
Java:
if (naechster == null) {          
       
        naechster = new Listenelement();    
        naechster.setDaten(datenNeu);      
        }
     else                            
        daten = datenNeu;                          
        System.out.println("Daten\t"+datenNeu+"\t wurden eingefügt.");            
                                                                           
    }
 

thor_norsk

Bekanntes Mitglied
Also wenn ich richtig verstanden habe, dadurch dass ich Listenelement naechster vereinbart habe kann ich mehrere Elemente speichern?
Wahrscheinlich sind dann in der if(..) wenn ich jedes Mal naechster = new Listenelement() erzeuge sind es verschiede naechster?
Schwer zu erklären. Ich mein am Ende habe ich zum Beispiel 5 Mal naechster mit verschiedenen Werte ?
Z.B.
naechster = new Listenelement();
neachster.setDaten(datenNeu); hat den Wert "Element2" // Also es sind Referenzen (kopie des Originals?) Original ist
// Listenelement naechster; ?

nächste Runde:
naechster = new Listenelement();
neachster.setDaten(datenNeu); hat den Wert "Element3" // naechster Referenz von Original

nächste Runde:

naechster = new Listenelement();
neachster.setDaten(datenNeu); hat den Wert "Element4" // wie oben

Usw.

Also der Compiler weiß Bescheid, dass naechster = " Element2" (Referenz), dann wieder naechster="Element3" (Referenz)usw.

Mathematisch schlecht beschrieben :

// (1,2,3,n) sind interne vermerke vom Compiler, damit der Compiler die von einander unterscheiden kann ?
Listenelement naechster = { naechster(1), naechster(2), naechster(3), naechster(n)};

Ich hoffe, ich könnte euch meine Gedanken wiedergeben.
 
M

Mart

Gast
Also wenn ich richtig verstanden habe, dadurch dass ich Listenelement naechster vereinbart habe kann ich mehrere Elemente speichern?
Wahrscheinlich sind dann in der if(..) wenn ich jedes Mal naechster = new Listenelement() erzeuge sind es verschiede naechster?
Schwer zu erklären. Ich mein am Ende habe ich zum Beispiel 5 Mal naechster mit verschiedenen Werte ?
Z.B.
naechster = new Listenelement();
neachster.setDaten(datenNeu); hat den Wert "Element2" // Also es sind Referenzen (kopie des Originals?) Original ist
// Listenelement naechster; ?

nächste Runde:
naechster = new Listenelement();
neachster.setDaten(datenNeu); hat den Wert "Element3" // naechster Referenz von Original

nächste Runde:

naechster = new Listenelement();
neachster.setDaten(datenNeu); hat den Wert "Element4" // wie oben

Usw.

Also der Compiler weiß Bescheid, dass naechster = " Element2" (Referenz), dann wieder naechster="Element3" (Referenz)usw.

Mathematisch schlecht beschrieben :

// (1,2,3,n) sind interne vermerke vom Compiler, damit der Compiler die von einander unterscheiden kann ?
Listenelement naechster = { naechster(1), naechster(2), naechster(3), naechster(n)};

Ich hoffe, ich könnte euch meine Gedanken wiedergeben.
trotz alledem hast du in dem if nen fehler, da dein system.out.println an der stelle keinen sinn ergibt ->

du gibst ne falsche ausgabe aus
 

thor_norsk

Bekanntes Mitglied
Was mich persönlich ärgert und was mir auch Schwierigkeit breitet, dass bei der Methode anhaengen() in dem else Zweig, wird die Methode rekursiv aufgerufen und dann System.out....... Ich frage mich? Wenn die Methode rekursiv aufgerufen wird, dann darf System.out.println nicht mehr aufgerufen werden oder ?
 

Jw456

Top Contributor
Zeige uns doch erst noch mal wie dein Code jetzt ausschaut schwierig bei dem durcheinander und keiner weiß genau was du nun alles verändert hast
 

thor_norsk

Bekanntes Mitglied
[CODE lang="java" title="Verkette Liste"]void anhaengen(String datenNeu) {

if (naechster == null) {

naechster = new Listenelement();
naechster.setDaten(datenNeu);
}
else
naechster.anhaengen(datenNeu); //Durch rekursiver Aufruf dürfte System.out.... nicht ausgeführt werden oder ?
System.out.println("Daten\t"+datenNeu+"\t wurden eingefügt.");
}[/CODE]
 

Jw456

Top Contributor
In post 10 ist doch schon alles gesagt. Vergeiche den Else Zweig mit deinem.

Ok ist Falsch
 
Zuletzt bearbeitet:

Jw456

Top Contributor
Java:
daten = datenNeu;
Reicht kein rekursions Aufruf

Ok ist falsch
 
Zuletzt bearbeitet:

Jw456

Top Contributor
Ok bei deinem Code ist eigentlich nur die Ausgabe falsch.
Du willst ja erstmal die Kette bis zum Ende duchgehen und dann anhängen.

Also ist dein Code ok lasse das mit der Ausgabe weg.

Wenn dann gehört die Ausgabe in den if Zweig
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Doppelt verkette Liste Element löschen Java Basics - Anfänger-Themen 15
J Doppelt verkette Liste ich bitte um Hilfe Java Basics - Anfänger-Themen 4
S Einfach verkette Liste Java Basics - Anfänger-Themen 27
C Zyklisch verkette Liste - Pop() methode implementieren Java Basics - Anfänger-Themen 2
C Methoden Einfach verkette Liste - int Werte aufsteigend sortieren Java Basics - Anfänger-Themen 1
H Datentypen Doppelte Verkette Liste - Verständnissproblem Java Basics - Anfänger-Themen 5
C verkette liste sortieren? Java Basics - Anfänger-Themen 7
W Rekursion und verkette Liste Java Basics - Anfänger-Themen 5
I einfach verkette Liste Java Basics - Anfänger-Themen 9
L doppelt verkette Liste Java Basics - Anfänger-Themen 5
H doppelt verkette liste Java Basics - Anfänger-Themen 2
llabusch Verkette Listen - Einfach und Doppelt Java Basics - Anfänger-Themen 3
K Verkette Listen Java Basics - Anfänger-Themen 13
K Verkette Listen ? Java Basics - Anfänger-Themen 6
R Liste in Variable speichern Java Basics - Anfänger-Themen 6
R Liste und Arrays Java Basics - Anfänger-Themen 12
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
M Verkettete Liste Java Basics - Anfänger-Themen 1
M Vergleichen, ob eine Liste länger als andere ist Java Basics - Anfänger-Themen 6
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
D remove Object von einer Liste von Obejcts Java Basics - Anfänger-Themen 3
E Elemente aus Liste entfernen und hinzufügen Java Basics - Anfänger-Themen 3
M Nullpointer beim befüllen meiner Liste im Object Java Basics - Anfänger-Themen 3
D Länge einer Liste aufrufen. Java Basics - Anfänger-Themen 19
B Objekt aus generalisierter Liste entfernen Java Basics - Anfänger-Themen 11
H Liste Knoten NullPointerException Java Basics - Anfänger-Themen 7
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
N Was Passiert mit dem Namen einer Variable, wenn man diese einer Liste Hinzufügt Java Basics - Anfänger-Themen 16
E Suchfunktion in einer Liste Java Basics - Anfänger-Themen 39
T ungeordnete Werte-Paare in einer Liste Java Basics - Anfänger-Themen 7
L Hilfe! Liste mit Items werden ausgegeben aber nicht in zufälliger Reihenfolge Java Basics - Anfänger-Themen 6
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
sserio Wieso werden nicht alle Primzahlen bis 1000 in meine Liste gepackt ? Java Basics - Anfänger-Themen 8
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
f3mys Objektwerte in Liste speichern und wieder abrufen Java Basics - Anfänger-Themen 23
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
K Warum ist die binäre Suche bei der verketteten Liste nicht so effektiv? Java Basics - Anfänger-Themen 3
I 2D-Array Position der Liste ausgeben. Java Basics - Anfänger-Themen 2
I Liste von Infos von einer eigenen Annotation in Liste speichern Java Basics - Anfänger-Themen 0
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
R Rückgabe: verkettete Liste Java Basics - Anfänger-Themen 2
R einfach verkettete Liste Java Basics - Anfänger-Themen 1
R einfach verkettete Liste Java Basics - Anfänger-Themen 12
B GUI extension mit einer Liste verbinden Java Basics - Anfänger-Themen 1
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
M Java Liste streamen Java Basics - Anfänger-Themen 10
AmsananKING Aussortierung einer Liste Java Basics - Anfänger-Themen 8
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
A Korrigierte <String> Liste zurückgeben Java Basics - Anfänger-Themen 22
S Kann nicht auf die Liste zugreifen mit der Methode!? Java Basics - Anfänger-Themen 3
B Datentyp für Einzelnes Objekt oder Liste Java Basics - Anfänger-Themen 9
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
I Liste gruppieren nach Monat? Java Basics - Anfänger-Themen 5
districon Element in Liste einfügen Java Basics - Anfänger-Themen 1
B Hilfe bei Map Liste erstellen Java Basics - Anfänger-Themen 10
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
Y Knoten an einem gegebenen Index aus einer Liste entfernen. Java Basics - Anfänger-Themen 6
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
Gaudimagspam Linked Liste Java Basics - Anfänger-Themen 4
Z Liste umkehren Java Basics - Anfänger-Themen 1
S Eine Liste kopieren Java Basics - Anfänger-Themen 13
java3690 Java- liste füllen ud die werte addieren Java Basics - Anfänger-Themen 13
java3690 Liste mit zufälligen zahlen füllen Java Basics - Anfänger-Themen 27
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
J Element aus Liste nehmen Java Basics - Anfänger-Themen 3
B JUnit 4: Wie man die eigene Liste testen kann [TDD] Java Basics - Anfänger-Themen 46
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
P Was genau bringt mir es ein Array in eine Liste zu bringen Java Basics - Anfänger-Themen 3
A Doppelt verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 17
P Verschachtelte Array Liste Java Basics - Anfänger-Themen 2
H Liste speichern. Was lässt sich verbessern? Java Basics - Anfänger-Themen 7
P Performance Array und Liste Java Basics - Anfänger-Themen 13
M QuickSort und Liste Java Basics - Anfänger-Themen 6
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
B Summe von Property innerhalb einer Liste via Lambda Java Basics - Anfänger-Themen 1
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
V_Fynn03 Beliebiges Element in einer Liste löschen (Java)(Lineare Datenstrukturen) Java Basics - Anfänger-Themen 9
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
CptK Koordinate in Liste suchen Java Basics - Anfänger-Themen 20
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
D Doppelt Verkettete Zirkular-Liste Java Basics - Anfänger-Themen 1
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 1
M Array liste Verdrehen Java Basics - Anfänger-Themen 8
A Verkettete Liste Java Basics - Anfänger-Themen 2
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
B Liste von Tagen generieren ab einem bestimmten Datum und Endedatum Java Basics - Anfänger-Themen 4
S IndexOutOfBoundsException beim hinzufügen eines Elements zu einer Liste Java Basics - Anfänger-Themen 11
B Liste sortieren? Java Basics - Anfänger-Themen 4
O Anonyme Klasse einer Liste erstellen Java Basics - Anfänger-Themen 7
B SWAP List; Liste neu anordnen Java Basics - Anfänger-Themen 4
B CSS Klassen in eine Liste schreiben Java Basics - Anfänger-Themen 4
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

Ähnliche Java Themen

Neue Themen


Oben