Pointer

Hallo,

ich soll als Aufgabe eine (Linked-)List schreiben. Die implementierung in Java ist mir bekannt.

Dies war auch nicht der schwere Teil :D

Meine Aufgabe ist nun, die Liste selbst zu schreiben. Sprich ist soll um ein Element zB. einzufügen die Zeiger der Liste selbst umstellen.
Ich habe sehr lange im Internet zu diesem Thema gesucht und nur die Aussagen gefunden, dass es in Java keine Pointer gibt, was mir bereits bekannt war!

Ist dies möglich und wenn ja wie?
Denkanstöße reichen schon :p

Danke im Vorraus
 
Hallo,

es gibt keine Pointer in dem Sinne wie es sie in C++ gibt, aber meiner Meinung nach vergleichbar wäre eine normale Variable. Wenn sie von einer Klasse ist, ist sie eine Referenz auf ein Object und man kann diese genauso "umbiegen" wie einen Zeiger.

Beispiel
Code:
Integer i = new Integer(5);
Integer j = new Integer(10);
j = i;
j = 20; // i und j sind jetzt 20

Ich hoffe das es klar geworden ist was ich meine.

MFG

zEriX
 
danke schon mal für deine schnelle Antwort!

Leider hilft mir der Beitrag nicht viel weiter, da ich halt die Funktion von Zeigern deutlich machen soll. Kann auch sein, dass es gar nicht möglich ist, was ich machen soll.

Das Problem ist, dass man anhand von
Code:
j = i;
nicht genau die Pointer erkennen kann.

Würde ich diese Implementierung verwenden, wäre das nächste Problem, dass ich nicht weiß wie ich herausfinden kann, welche Variable wohin zeigt.
Um das ein wenig zu verdeutlichen:
(eine einfache Liste)

a -> b -> c -> d

wenn ich nun ein Element "e" zwischen "b" und "c" einfügen möchte, wie bekomme ich heraus, auf was "b" zeigt? Den ich muss ja wissen, auf was das neue Element "e" zeigen muss
 
Wieso überhaupt Pointer? Kannst du dir nicht einfach mit int Werten die Position merken?
 
Hi,
vielleicht hilft dir das weiter (ist nur eine Anregung und sicherlich ausbaufähig):
Code:
class Node{
	Object element;	// Datenkomponente
	Node	next;	// Verweis auf Restliste

	Node(Object e) {
		element= e;
		next= null;
	}
}

public class List{
	private Node head;

	public List(Object x){  //Konstruktor bekommt erstes Element der Liste übergeben
		head = new Node(x);
	}
	
	public void insert (Object x){  //Möglichkeit ein Element an Liste zu hängen
		Node n = head;
		while (n.next != null){  //Ende der Liste suchen
			n = n.next;
		}
		n.next = new Node(x);  //Elemente einfügen
	}
}

Gruß,
swalbking
 
@Tom

Stimmt, da hab ich etwas falsch gedacht.:-( War da wohl etwas zu schnell :)
hatte ich wohl ein schlechtes Beispiel gewählt.
 
Also, wie ihr schon richtig erkannt habt gibt es in Java keine Zeiger, denoch lassen sich dynamische Listen anfertigen in dem man rekursive Algorythmen verwendet. Wir haben dass mal im Informatik LK bei mir in der Schule gemacht und das geht. Nur is, dass schon n weilchen her, musst mal im Netz schauen, ob de darunter was findest.

Lg roflomfg

ps: das is aber ziemlich kompliziert, von daher bin ich mir nicht sicher ob ihr das wirklich machen sollt

achja wenn du unter listen nichts findest, dann schau ma unter "Bäume", die sind auch rekusrsiv zu Programmieren nur mit dem Unterschied, das ein Baum mehrere Nachfolger haben kann, und ne Liste logischerweise nur einen hat.
 
So jetzt mal ein Beispiel was aber stimmt.
Code:
public class test {
	public static void main(String[] args) {
		Integer[] i = new Integer[1];
		Integer[] j = new Integer[1];
		i[0] = 5;
		i = j;

		j[0] = 20;
		System.out.println(i[0]);
		System.out.println(j[0]);
	}
}
 

Neue Beiträge

Zurück