Я пытаюсь реализовать свой собственный класс списка, но у меня проблемы с реверсированием только части моего списка.обратная часть дважды связанного списка
Revelant код:
void List<T>::reverse(ListNode * & head, ListNode * & tail)
{
ListNode* t;
ListNode* curr = head;
ListNode * funtail = tail;
int stop=0;
while(stop==0)
{
if(curr==funtail)
{
stop = 1;
}
t = curr->prev;
curr->prev = curr->next;
curr->next = t;
curr = curr->prev;
}
t = tail;
tail = head;
head = t;
}
Если я начну со списком
1 2 3 4 5 6 7 8 9 10
и я прохожу в указатели на 1 и 4, то список должен выглядеть
4 3 2 1 5 6 7 8 9 10
Проблема в том, что мой список возвращает только
1
Остальная часть списка потеряна (ну, по-прежнему доступна из моей глобальной переменной хвоста). Есть идеи? Является ли мой метод неправильным?
В вашей первой итерации цикла 'while' вы присваиваете' curr-> prev' '' t'. Что произойдет, если вы начнете реверсировать в голове, где нет предыдущего узла? – jrok