summativ, Ihr Problem ruft für die Suche nach und einen Knoten in verketteten Liste unabhängig von ihrer Position in der Kette zu entfernen, weshalb, könnte es die ersten, letzten oder irgendwo in der Mitte sein.
Darunter sind einige sichere Annahmen bezüglich des Problems.
Die Spiel Klasse hat die folgende Struktur.
class Game{
public String name;
public Game prev;
public Game next;
}
Das Kopf Objekt bereits in der enthaltenden Klasse definiert.
Die removeGame() Methode muss in der folgenden drei Reihe von Szenarien codiert werden, die implizit Pflege von Knoten Löschungen brauchen. Wenn es etwas zurückgibt, können Sie Informationen über erfolgreiche Löschungen erhalten. Hier wird Boolean zurückgegeben. Es basiert tatsächlich auf dem Thema, dass der Subjektknoten, der gelöscht werden soll, ein Kandidat der Speicherbereinigung sein muss.
public boolean removeGame(Game txt)
{
if(txt==null)return false;
Game itr = head;
//if its header
if(itr.name.equals(txt.name))
{
Game newHead = head.next;
head=newHead;
//The previous header hence gets derefrenced and becomes a candidate of garbage collection
return true;
}
//if its midway or end
itr = head.next;
while(itr!=null){
Game subjectNode = itr;
if(subjectNode.name.equals(txt.name))
{
Game newPrev = subjectNode.prev;
Game newNext = subjectNode.next;
newPrev.next = subjectNode.next;
newNext.prev= subjectNode.prev;
subjectNode=null;
//This makes it derefrenced and hence subject to garbage collections after refrence swaps.
return true;
}
itr = itr.next;
}
return false;
}
Auch da Sie die Java-Implementierung tun, bevorzugen passend zu Ihrem Szenario mit LinkedList Klasse von util-Paket Java.
Wo ist die verknüpfte Liste? Ist es eine verknüpfte Liste von Spielen? Oder ist die Spielklasse selbst eine verkettete Liste? Vielleicht möchten Sie auch die Spielklasse anzeigen ... Ansonsten müssen Sie normalerweise den Zeiger von prev nach next ändern und dann den aktuellen löschen ... Und ja. In eine Rekursion zu gehen ist falsch. Und wo in der Schleife gehst du zum nächsten Element? – dingalapadum
Es ist eine verknüpfte Liste von Spielen. – PeterP1989