У меня было интервью сегодня для позиции разработчика, и мне был задан интересный технический вопрос, на который я не знал ответа. Я спрошу его здесь, чтобы узнать, может ли кто-нибудь предоставить мне решение для моего любопытства. Вопрос состоит из нескольких частей:Поиск коррупции в связанном списке
1) Вам предоставляется одноуровневый список со 100 элементами (целое число и указатель на следующий узел), найти способ обнаружить, есть ли перерыв или повреждение на полпути через связанный список? Вы можете сделать что-либо со связанным списком. Обратите внимание, что вы должны сделать это в списке, поскольку он выполняет итерацию, и это проверка, прежде чем вы поймете, что в списке есть какие-либо проблемы с ним.
Предполагая, что разрыв в связанном списке находится на 50-м элементе, целое число или даже указатель на следующий узел (51-й элемент) могут указывать на значение мусора, которое не обязательно является недопустимым адресом.
2) Обратите внимание, что если в связанном списке есть коррупция, как бы вы минимизировали потерю данных?
", который не обязательно является недопустимым адресом" Запрет небезопасного ключевого слова C# или некорректного взаимодействия (P/Invoke, JNI), как бы у вас был указатель на недопустимый адрес на C# или Java? –
Сначала вам нужно определить «коррумпированные». – SimpleVar
Действительно ли правильно отметить это с помощью C# и Java? У них нет указателей (если не написано небезопасный код C#), а ссылка не может указывать на недопустимый адрес. Вопрос имеет смысл в C или C++. –