Tuve una entrevista hoy para un puesto de desarrollador y me hicieron una pregunta técnica interesante que no sabía la respuesta. Lo preguntaré aquí para ver si alguien puede proporcionarme una solución para mi curiosidad. Es una pregunta de varias partes:Encontrar corrupción en una lista vinculada
1) Se le proporciona una lista individualmente vinculada con 100 elementos (entero y un puntero al siguiente nodo), encuentre una manera de detectar si hay una ruptura o corrupción a mitad del enlace ¿lista? Puede hacer cualquier cosa con la lista vinculada. Tenga en cuenta que debe hacer esto en la lista ya que se está iterando y esto es una verificación antes de darse cuenta de que la lista tiene algún problema.
Suponiendo que la ruptura en la lista vinculada está en el 50º elemento, el entero o incluso el puntero al siguiente nodo (51º elemento) pueden estar apuntando a un valor basura que no es necesariamente una dirección no válida.
2) Tenga en cuenta que si hay una corrupción en la lista vinculada, ¿cómo minimizaría la pérdida de datos?
"que no es necesariamente una dirección no válida" Barring C# palabra clave insegura o alguna interoperabilidad nativa (P/Invoke, JNI), ¿cómo tendría un puntero a una dirección no válida en C# o Java? –
Primero tendrá que definir "corrupto". – SimpleVar
¿Es realmente correcto etiquetar esto con C# y Java? No tienen punteros (a menos que se escriba código inseguro C#) y una referencia no puede apuntar a una dirección no válida. La pregunta tiene más sentido en C o C++. –