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.