KuroKami69 ha scritto:
Node<E> tmp = head.getLink();
head = head.getLink().getLink();
tmp.setLink(null);
return tmp;
uso un nodo temporaneo per salvarmi ciò a cui punta l'head.
assegno ad head ciò a cui punta il nodo a cui puntava head. metto a null il link del nodo che tiro fuori. lo ritorno.
mi dice che i tipi sono incompatibili
Una premessa innanzitutto: se head NON è null, allora sta facendo riferimento al PRIMO nodo.
Il tuo tmp non contiene il primo nodo .. ma il secondo! Perché sei andato oltre con getLink().
Quindi semplicemente:
Node<E> tmp = head;
Poi devi far "saltare" via quel nodo dalla catena di nodi. Cioè head adesso deve puntare il SECONDO nodo (se esiste, altrimenti è un reference null). Se tmp ora è il primo, allora semplicemente:
head = tmp.getLink();
Poi ok
tmp.setLink(null);
È una finezza in più. Se i nodi non fossero mai esposti, questo annullamento non servirebbe più di tanto.
Poi devi ritornare qualcosa. Vuoi restituire il nodo o il dato nel nodo? Se hai messo E come tipo di ritorno, allora vuoi restituire il dato, quindi:
return tmp.getData();
Non ha senso (E)tmp . Il nodo è la scatola, il dato è il contenuto nella scatola. Non ha senso "tentare" di convertire la scatola nel contenuto!
P.S. Davvero era così difficile nonostante mie spiegazioni precedenti e graficini "spammati" da me e prof.?