# einfachen verkettete Liste



## mucos001 (7. Jan 2020)

Hallo Forum
Ich habe eine Liste geschrieben.Ich habe schon eine Problem Liste Kopien
ich möchte kopieren , aller Elemente der orginal Liste enthalten
könntet ihr mir bitte helfen
danke


public class Link 
{
public int daten;
public Link naechster;


public Link(int daten, Link naechster)
{
this.daten = daten;
this.naechster = naechster;
}
}

public class Liste 
{
private Link anfang, ende;

public Liste()
{
anfang = ende = null;
}

public void anfuegen(int daten)
{
Link neu = new Link(daten, null);

if(anfang == null)
{
anfang = ende = neu;
}
else
{
ende = ende.naechster = neu;
}
}


public Liste kopieren()
{
Liste copy = new Liste();

Link zeiger = anfang;

while(zeiger != null)
{
copy.anfuegen(zeiger.daten);
zeiger = zeiger.naechster;
}
copy.anfang = zeiger;

return copy;

}


public void ausgeben()
{
System.out.print("Liste:");

Link aktuel = anfang;

while(aktuel != null)
{
System.out.print(aktuel.daten);

aktuel = aktuel.naechster;
}
}

}

public class Main 
{

public static void main(String[] args) 
{
Liste l = new Liste();

l.anfuegen(5);
l.anfuegen(6);
l.anfuegen(7);

System.out.println(l.kopieren());

l.ausgeben();
}

}

}


----------



## kneitzel (7. Jan 2020)

```
public Liste kopieren() {
  Liste copy = new Liste();

  Link zeiger = anfang;

  while(zeiger != null) {
    copy.anfuegen(zeiger.daten);
    zeiger = zeiger.naechster;
  }

  // Was willst Du hier machen? zeiger ist null, sonst wäre er noch in der while schleife!
  copy.anfang = zeiger;

  return copy;
}
```

Also wie im Kommentar geschrieben: Das macht so keinen Sinn!

Du hast in der While Schleife alle Element hinzugefügt, also bist Du danach fertig und musst copy.anfang nicht mehr setzen. Das ist ja schon korrekt auf dem ersten Element!


----------



## mucos001 (8. Jan 2020)

habe ich schon Zeile copy.anfang = zeiger gelöscht.Die Zeile benötigt nicht, dass ich verstanden habe .
danke


----------

