Дело не в реализации указателей в с# или еще в каком-то языке.
Двусвязный список, это по определению вот такая структура:
Т.е. такая вот общеизвестная фундаментальная структура данных, многократно описанная и реализованная, наверное, во всех актуальных многопрофильных языках. Подразумевается, что картинка не содержит в себе новой информации.
Я не могу поверить, что приведенная реализация позволяет итерироваться по списку в обоих направлениях, т.к я вижу, что это не реализовано.
Если написать тест к этому коду, проверяющий "связность" списка, то он не отработает корректно.
Суть задачи заключается хорошем понимании механики связного списка и, как следсвие, во внимательном обращении с указателями, проверке пограничных условий и тд.
Естесвенно, для того, чтобы в полном объеме реализовать метод swap нужно реализовать также вставку и удаление элементов. Без этой части невозможно убедится, что swap действительно работает, более того, нельзя даже понять, как должна быть организована его работа.
Для тех, кто заинтересовался в возможных подводных камнях, то эта тема хорошо описана тут
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein – Introduction to Algorithms, Second Edition или тут http://staff.science.uva.nl/~heck/JAVAcourse/ch4/sss1_2_3.html. При желании, можно найти и на русском.
Двусвязный список, это по определению вот такая структура:
Т.е. такая вот общеизвестная фундаментальная структура данных, многократно описанная и реализованная, наверное, во всех актуальных многопрофильных языках. Подразумевается, что картинка не содержит в себе новой информации.
Я не могу поверить, что приведенная реализация позволяет итерироваться по списку в обоих направлениях, т.к я вижу, что это не реализовано.
Если написать тест к этому коду, проверяющий "связность" списка, то он не отработает корректно.
Суть задачи заключается хорошем понимании механики связного списка и, как следсвие, во внимательном обращении с указателями, проверке пограничных условий и тд.
Естесвенно, для того, чтобы в полном объеме реализовать метод swap нужно реализовать также вставку и удаление элементов. Без этой части невозможно убедится, что swap действительно работает, более того, нельзя даже понять, как должна быть организована его работа.
Для тех, кто заинтересовался в возможных подводных камнях, то эта тема хорошо описана тут
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein – Introduction to Algorithms, Second Edition или тут http://staff.science.uva.nl/~heck/JAVAcourse/ch4/sss1_2_3.html. При желании, можно найти и на русском.