Innanzitutto alcune considerazioni generali.Originariamente inviato da VincenzoTheBest
Spero qualcuno mi aiuti ad impostare l'implementazione degli operatori insert e remove perchè
non so da dove partire!
Entry rappresenta un nodo "concreto" della lista. Posizione è una interfaccia che rappresenta in modo più astratto (e aggiungo, "opaco" all'esterno di ListDoubleLinkedExt) un nodo.
Se Entry non serve altrove fuori da ListDoubleLinkedExt allora sarebbe anche appropriato mettere Entry come nested class privata di ListDoubleLinkedExt.
remove() è facile. Scansioni la lista linkata e quando trovi quello stesso identico oggetto Entry (qui si intende proprio uguaglianza del reference!) allora lo fai "saltare" via. Nel senso che il precedente nodo e il successivo nodo devono "puntarsi". Chiaramente non è detto che ci sia un nodo successivo .... ma non ti interessa, perché ti serve solo trattare il campo 'successivo' del nodo trovato.
Per dirlo a parole, sia 'corrente' il Entry trovato (lo stesso oggetto referenziato dal Posizione passato):
a) a corrente->precedente->successivo devi assegnare corrente->successivo (qualunque cosa sia)
b) se corrente->successivo non è null allora a corrente->successivo->precedente devi assegnare corrente->precedente
Con -> indico in generale il riferimento del campo (se puoi vuoi usare accesso diretto o setter/getter, vedi tu).
Il insert() è una cosa similare ma opposta, solo che qui inserisci un nuovo Entry in mezzo a due nodi. E immagino che il Entry devi inserirlo dopo il Posizione trovato.