Verlinkung zweier Variablen

Bei Postings zu Aufgabe Nr. x = 1..4 lassen Sie Ihr Betreff bitte mit "x: " beginnen, gefolgt von einer möglichst präzisen Überschrift, danke!

Moderator: Algorithmen und Datenstrukturen

Forumsregeln
Bei Postings zu Aufgabe Nr. x = 1..4 lassen Sie Ihr Betreff bitte mit "x: " beginnen, gefolgt von einer möglichst präzisen Überschrift, danke!
Antl
Neuling
Neuling
Beiträge: 1
Registriert: 14. Sep 2016 16:03

Verlinkung zweier Variablen

Beitrag von Antl » 14. Sep 2016 16:13

Guten Tag,
ich glaube ich habe etwas grundlegendes im Zusammenhang mit Java falsch verstanden.
Wenn ich durch eine Liste iterieren indem ich einen Zeiger erstelle, mache ich das nach dem Schema:
ListElement <T> Zeiger = header; //wobei header das erste Listenelement meiner Liste darstellt.

Wenn ich nun im Verlauf meiner Methode Zeiger=Zeiger.next anwende, ändere ich doch auch damit meinen header. Wenn meine Methode dann fertig ist, hab ich das header Element doch komplett verändert oder? Die Frage ist weniger ob das so ist, denn das weiß ich bereits. Die Frage ist viel eher ob ich das in einer Klausur ignorieren darf oder einen anderen Weg finden muss, ohne die ursprüngliche Liste zu ändern.
MfG

kci
Windoof-User
Windoof-User
Beiträge: 24
Registriert: 21. Apr 2016 20:54

Re: Verlinkung zweier Variablen

Beitrag von kci » 14. Sep 2016 16:59

schau dir nochmal die Folien dazu an insbesondere lists-referenzsemantik und lists-linked lists, sollte den Unterschied zwischen einer Variable und einem Objekt klar machen und dass 2 Variablen auf das selbe Objekt verweisen können

yokop
Windoof-User
Windoof-User
Beiträge: 28
Registriert: 13. Apr 2016 12:49

Re: Verlinkung zweier Variablen

Beitrag von yokop » 14. Sep 2016 19:22

Code: Alles auswählen

for (ListItem<T> p = head; p != null; p = p.next)
Angenommen das Objekt head ist der Kopf einer linearen Liste, dann ist p (zu Beginn) lediglich ein Verweis, ein Zeiger, auf dieses erste Element, jedoch nicht das Objekt an sich. Im Verlauf der Schleife wird durch p = p.next der Verweis geändert, p zeigt nun auf den jeweiligen Nachfolger des Elementes. Dabei wird das Objekt selbst wird jedoch nicht geändert.

Antworten

Zurück zu „AuD: Programmieraufgaben“