L
Lars17
Gast
Hallo!
Ich versuche gerade zu verstehen, wie dieses Programm hier funktioniert. Ich steige irgendwie nicht ganz dahinter. Zumindest nicht bei dem Punkt, wie die einzelnen Listeneinträge gespeichert werden.
Der erste Listeneintrag ist klar, aber was passiert, wenn die "20" aus dem MAIN in "public void neuen_link_hinzufügen(int d)" übergeben wird? Als erstes wird wieder ein neues bzw. das alte "doppellink" Objekt überschrieben (denke ich mir jetzt so, weils ja immer der gleiche Name ist). Wenn das alte Objekt aber überschrieben wird, dann müsste ja die "10" die zuerst in die Liste hinzugefügt wurde, jetzt durch die "20" überschrieben werden. Das macht es zwar nicht, aber ich verstehe halt nicht warum und wieso nicht.
Wäre super, wenn ihr mir das mal erklären könntet.
Vielen Dank
Lars
Ich versuche gerade zu verstehen, wie dieses Programm hier funktioniert. Ich steige irgendwie nicht ganz dahinter. Zumindest nicht bei dem Punkt, wie die einzelnen Listeneinträge gespeichert werden.
Der erste Listeneintrag ist klar, aber was passiert, wenn die "20" aus dem MAIN in "public void neuen_link_hinzufügen(int d)" übergeben wird? Als erstes wird wieder ein neues bzw. das alte "doppellink" Objekt überschrieben (denke ich mir jetzt so, weils ja immer der gleiche Name ist). Wenn das alte Objekt aber überschrieben wird, dann müsste ja die "10" die zuerst in die Liste hinzugefügt wurde, jetzt durch die "20" überschrieben werden. Das macht es zwar nicht, aber ich verstehe halt nicht warum und wieso nicht.
Wäre super, wenn ihr mir das mal erklären könntet.
Vielen Dank
Lars
Code:
class doppelLink
{
public int Daten; //als Daten dient hier eine integer Zahl
public doppelLink vorheriger; //Der Verweis auf den vorherigen Link
public doppelLink naechster; //der Verweis auf den nächsten Link
public doppelLink(int d) //Der Konstruktor
{ //es wird eine integer Zahl übergeben
Daten=d; //und Daten zugewiesen
}
public void zeigedoppelLink() //gibt den Link als 1er Menge aus
{
System.out.print("{" + Daten +"} ");
}
}
class doppelLinkListe
{
private doppelLink Zeiger_auf_ersten_link; //Der Zeiger auf den 1.link
public doppelLinkListe() //der Konstruktor
{ //Standdardmäßig gibt es keinen weiteren Link
Zeiger_auf_ersten_link=null; //deswegen wird null angegeben
}
public boolean ist_Liste_leer() //ist die Liste leer?
{
return(Zeiger_auf_ersten_link==null); //gibt zurück ob leer oder nicht
}
public void neuen_link_hinzufügen(int d) //Ein neuer Link wird hinzugefügt
{
doppelLink neuerLink= new doppelLink(d); //instanzbildung
neuerLink.naechster=Zeiger_auf_ersten_link; //Verbindung zum Rest der Liste
neuerLink.vorheriger=null; //neuerlink ist erster link,
//deshalb gibt es keinen vorherigen
if(neuerLink.naechster!=null)
{
doppelLink temp=neuerLink.naechster; //temp ist 2. Link
temp.vorheriger=neuerLink; //das vorherige von temp ist 1.link
}
Zeiger_auf_ersten_link=neuerLink; //Zeiger auf 1.Link
//zeigt aufs neue 1.Listenelement
}
public doppelLink link_zurueckgeben() //gibt den ersten link zurueck
{
return(Zeiger_auf_ersten_link); //Der Zeiger auf den 1.link ist eine Adresse
} //in der steht, wo das Objekt ist, diese Adresse wird übergeben
}
public class doppelLinkListeApp
{
public static void main(String argv[])
{
doppelLinkListe dieListe = new doppelLinkListe(); //ein neues Objekt der Klasse LinkListe wird erstellt
dieListe.neuen_link_hinzufügen(10); //vier links werden der Liste zugefügt
dieListe.neuen_link_hinzufügen(20);
dieListe.neuen_link_hinzufügen(30);
dieListe.neuen_link_hinzufügen(40);
System.out.println(dieListe);
dieListe.zeigeListe(); //Ausgabe der Liste
dieListe.link_loeschen(); //löschen des ersten links
System.out.println("erster link wurde gelöscht");
dieListe.zeigeListe(); //nochmalige Ausgabe
}
}