Come eliminare una stringa da una doppia lista collegata in Java?

March 5

Il linguaggio di programmazione Java è dotato di una serie di strutture di dati inclusi come le liste o dizionari collegate. Tuttavia, è possibile ad un certo punto vogliono creare le proprie implementazioni di strutture di dati in base alle proprie specifiche finalità. Questo significa anche implementare le proprie funzioni di base per la struttura dei dati, comprese le funzioni di inserimento e cancellazione. Nel caso di una lista doppiamente concatenata contenente valori di stringa, questa è una questione di garantire che si trova il nodo contenente la stringa e collegando gli articoli prima e dopo l'elemento eliminato per mantenere la struttura della lista.

istruzione

1 Individuare il nodo della lista collegata si sta rimuovendo. In questo esempio, i nodi della lista doppiamente concatenata sono rappresentate dal dato "ListItem", che contiene una stringa (memorizzato come "valore") e due riferimenti ad altri ListItems: un "precedente" ad esso e uno "dopo" nella lista. La funzione "FindItem" attraversa l'elenco fino a trovare il nodo che contiene il valore di stringa, che restituisce un riferimento a quel nodo:

pubblico ListItem FindItem (String word) {

corrente ListItem = testa; // Capo della lista

while (current.value! = parola) {
corrente = current.next;
}

tornare corrente;
}

2 Creare lo scheletro di una funzione per rimuovere il nodo. Questa funzione chiamerà "FindItem" per individuare il nodo:

DeleteItem public void (parola String) {

ListItem rimozione = FindItem (word);

}

3 Modificare la funzione "DeleteItem" per collegare il nodo precedente al seguente nodo. Per garantire che la lista doppiamente collegata rimane intatto, il nodo precedente deve essere collegato al resto della lista seguente nodo:

DeleteItem public void (parola String) {

ListItem rimozione = FindItem (word);
removing.previous.after = removing.after; // Il nodo precedente ora collega al seguente nodo
}

4 Modificare la funzione "DeleteItem" per collegare il seguente nodo al nodo precedente. Per completare il collegamento e mantenere la lista come una lista doppiamente collegata, seguendo il nodo del nodo cancellato ora ha bisogno di un collegamento al nodo precedente del nodo cancellato:

DeleteItem public void (parola String) {

ListItem rimozione = FindItem (word);

removing.previous.after = removing.after;
removing.after.previous = removing.previous; // Seguente nodo ora collega al nodo precedente
}

5 Eliminare il nodo:

DeleteItem public void (parola String) {

ListItem rimozione = FindItem (word);

removing.previous.after = removing.after;
removing.after.previous = removing.previous;

rimozione = null;
}