Witam mam zadanie odwrócić liste dwukierunkowa i wpadlem na taki pomysl:
Mam wskaznik na ostatni element, wiec przechodze cala liste i swapuje wskazniki poprzedni i kolejny i przechodze do kolejnego elementu listy.
Ale nie wiem gdzie jest blad.
Zmienna tmp jest do swapowania wskaznikow, a tmp2 jest po to, zeby zapamietać kolejny wezel po swapnieciu.
void odwrot(lista*& glowa, lista* ostatni)
{
if (glowa == nullptr)return;
else
{
lista* iterator = glowa;
lista* tmp = glowa;
lista* tmp2 = glowa;
while (iterator != ostatni)
{
tmp2 = iterator->pkolejny;
tmp = iterator->ppoprzedni;
iterator->ppoprzedni = iterator->pkolejny;
iterator->pkolejny = tmp;
iterator = tmp2;
}
glowa = iterator;
}
}