Я только что нашел этот сложный вопрос для собеседования в Интернете и надеялся, что кто-нибудь поможет мне разобраться в нем. Это общий вопрос... учитывая односвязный список, поменяйте местами каждый элемент списка попарно так, чтобы 1->2->3->4 стал 2->1->4->3.
Вы должны поменять местами элементы, а не значения. Ответ должен работать для круговых списков, где хвост направлен назад к голове списка. Вам не нужно проверять, указывает ли хвост на промежуточный (не головной) элемент.
Итак, я подумал:
public class Node
{
public int n; // value
public Node next; // pointer to next node
}
Как лучше всего это реализовать? Кто-нибудь может помочь?