Löschen von Referenzen in einer Liste

Hero

Mitglied
Hallo,
Ich hab ein Problem und zwar:
Ich soll eine Liste erstellen und dann eben die Methoden Programmieren, die überprüfen sollen ob die Liste Leer ist, wie lang sie ist und so weiter. Ich soll auch eine Methode über die Methode:
Java:
public boolean remove(MyObject3DElement elem)
auch Elemente löschen anhand ihrer Referenz aber ich keine Ahnung wie das gehen soll.

Ich dachte mir, ich mach eine For Schleife die, denn Pointer der aktuellen Position immer hochzählt solange das Element nicht erreicht ist. Wenn der Pointer auf das Element zeigt, was gleich elem ist soll gelöscht werden aber ich weiß jetzt nicht genau wie ich das umsetzen soll.

Java:
public boolean remove(MyObject3DElement elem) {
		werden
	
		MyObject3DElement akt = root;
		for(int i=0;i < getLength();i++){
			akt= akt.nextPointer;
			
			if(elem.equals(akt)){
				
			}
		}
		
	return true;
	}

Ich hoffe ihr könnt mir weiter helfen
 
G

Gast2

Gast
Kommt auf die Implementierung deiner Liste an. Hast du ne einfach-/doppeltverkette Liste, oder Liste basierend auf arrays, oder...?
 

Hero

Mitglied
Ich hab eine doppelte verkette Liste.

Der Konstruktoren definiert ein neues Objekt vom Typ MyObject3DElemen mit gegebenem Inhalt und Null als nextPointer
Java:
MyObject3DElement(MyObject3D in){
		inhalt=in;
	}


Der Konstruktor definiert ein neues Objekt vom Typ MyObject3DElement mit gegebenem Inhalt und gegebenem nextPointer
Java:
MyObject3DElement(MyObject3D in, MyObject3DElement nptr,MyObject3DElement pptr){
		nextPointer = nptr;
		prevPointer=pptr;
		inhalt=in;
	}

Ich hab in den letzten Tagen gefehlt und es fällt mir
 
G

Gast2

Gast
Wie Final_Striker schon geschrieben hat:
Willst du Konten X löschen musst du einfach die Zeiger des Vorgängers und Nachfolgers ändern.
Code:
X-1.next = X+1
X+1.prev = X-1
Ansonsten einfach mal auf nem Blatt Papier mal aufmalen wie die Zeiger verbogen werden müssen.
 

HimBromBeere

Top Contributor
Du musst wahrscheinlich auch mal schauen, wie die equals-Methode deines MyObject3DElementes geschrieben wurde, damit du deine Elemente auch vergleichen kannst. Müssen zwei Elemente auf das selbe Objekt zeigen, oder reicht es, wenn sie gleiche Instanzvariablen haben, oder ...?
 

Hero

Mitglied
Danke aber im Theard wird aber nicht, dass besprochen was ich brauche aber ich hab auf einer Internetseite javakurs-online.de gefunden wie man die Referenzen vergleicht, nämlich über "==".

EDIT: maki war schneller :D
 

Hero

Mitglied
Hallo,
Wir müssen jetzt noch Iterator in der Listen-Klasse implementieren. Die Methoden hasNext() und next() hab ich schon geschrieben aber bei der remove() Methode bekomme ich keinen Ansatz hin. Ich hoffe ihr könnt mir weiter helfen.

Was muss in der remove Methode damit ich ein Element aus der Liste löschen kann

Mein Code:
Java:
public class MyObject3DList implements Iterable{
....
 public Iterator iterator() {
			 return new Iterator() {
			 MyObject3DElement akt = root; 
				
			 
				public boolean hasNext() { 
					 return akt !=null; 
				}
				
				public MyObject3DElement  next() {
					if (akt == null){
							throw new NoSuchElementException("Kein weiteres Element vorhanden");
				}
				MyObject3DElement  in = akt;
				akt = akt.nextPointer;
				return in;
				}
				
				
				public void remove() {
					if(next()==null){
				 		throw new IllegalStateException();
				 	}
				 	else{
				 		//	
				 	}
				 }
			 };
			}
 
Zuletzt bearbeitet:

Neue Themen


Oben