Oggi ho avuto un'intervista per una posizione di sviluppatore e mi è stata presentata un'interessante domanda tecnica che non conoscevo la risposta. Lo chiederò qui per vedere se qualcuno può fornirmi una soluzione per la mia curiosità. È una domanda in più parti:Trovare la corruzione in un elenco collegato
1) Viene fornita una lista concatenata con 100 elementi (intero e un puntatore al nodo successivo), trovare un modo per rilevare se c'è un'interruzione o una corruzione a metà del collegamento elenco? Puoi fare qualsiasi cosa con la lista collegata. Si noti che è necessario farlo nell'elenco mentre itera e questa è la verifica prima di rendersi conto che l'elenco ha problemi con esso.
Supponendo che l'interruzione nell'elenco collegato sia al 50 ° elemento, il numero intero o anche il puntatore al nodo successivo (51 ° elemento) potrebbe puntare a un valore di garbage che non è necessariamente un indirizzo non valido.
2) Si noti che se c'è un danneggiamento nell'elenco collegato, come ridurrai al minimo la perdita di dati?
"che non è necessariamente un indirizzo non valido" Parola chiave non sicura di Barring C# o qualche interoperabilità nativa (P/Invoke, JNI), come avresti un puntatore a un indirizzo non valido in C# o Java? –
Dovrai prima definire "corrotto". – SimpleVar
E 'davvero corretto etichettarlo con C# e Java? Non hanno alcun riferimento (a meno che non si scriva codice C# non sicuro) e un riferimento non può indicare un indirizzo non valido. La domanda ha più senso in C o C++. –