Mam problem z zamiana elementów w liscie powiazanej dwukierunkowej.
Napisana przeze mnie funkcja wyglada tak:
void zamienmiejscami(struct element **element1,struct element **element2)//blad
{
struct element *temp1,*temp2,*temp3;
int temp;
temp=(*element1)->lp;
(*element1)->lp=(*element2)->lp;
(*element2)->lp=temp;
(*element1)->poprzedni->nastepny=*element2;
(*element1)->nastepny->poprzedni=*element2;
(*element2)->poprzedni->nastepny=*element1;
(*element2)->nastepny->poprzedni=*element1;
temp1=(*element1)->poprzedni;
temp2=(*element1)->nastepny;
(*element1)->poprzedni=(*element2)->poprzedni;
(*element1)->nastepny=(*element2)->nastepny;
(*element2)->poprzedni=temp1;
(*element2)->nastepny=temp2;
}
Jako test wypisuje liste w jedna i w druga strone. W tym przypadku bledy pojawiaja sie przy wypisywaniu do przodu, czyli ktores wskazniki nastepny sa ustawione niepoprawnie
Probowalem to rowniez rozwiazac w inny sposob:
*temp1=(*element1);
(*element1)=(*element2);
(*element2)=temp1;
temp2=(*element2)->nastepny;
temp3=(*element2)->poprzedni;
(*element2)->poprzedni=(*element1)->poprzedni;
(*element2)->nastepny=(*element1)->nastepny;
(*element1)->poprzedni=temp3;
(*element1)->nastepny=temp2;
Tutaj nie dziala z kolei wypisywanie wspak, czyli cos z ustawieniami poprzednich :(
Prosze o jakies wskazowki gdzie popełniam bład, jak go naprawic, przeprowadzalem wiele symulacji na kartce z olowkiem i pokazywaly ze powinno byc ok.