Sono uno studente di informatica in Germania. Il mio professore ha dato utilizzare la seguente domanda a cui pensare:Algoritmo per l'eliminazione di un elemento in una sola lista collegata con O (1) la complessità
'Dato un riferimento ad un nodo in una sola lista collegata (che non è l'ultimo nodo). Dare un algoritmo per eliminare questo elemento dalla lista che ha complessità O (1) pur mantenendo l'integrità '.
ho pensato a questo, ma sono abbastanza sicuro, che non v'è tale algoritmo. poiché si tratta di un singolo elenco collegato, è necessario eseguire il ciclo di ogni nodo nell'elenco fino a raggiungere il nodo che deve essere eliminato, poiché è necessario modificare il puntatore successivo nel nodo prima dell'eliminazione. Quale porterebbe a O (n) complessità.
Mi sto perdendo qualcosa?
Ah, capito. Grazie :) –
fai attenzione, come ha spiegato Jon, che affinché funzioni, la struttura del nodo deve essere privata. Nessuno dovrebbe tenere un riferimento ai nodi stessi, solo ai dati. In caso contrario, i consumatori resterebbero con un riferimento non valido al vecchio oggetto toDelete.next (se si è in C++ per esempio e si è eliminata la struttura del nodo), o nella migliore delle ipotesi un oggetto nodo non valido. –
Questo non è proprio un 'algoritmo' per rimuovere un elemento da una lista collegata singolarmente vero? Questo è il metodo standard per rimuovere un elemento dall'elenco. – Dinuk