Witam. Męczę się już od dłuższego czasu z sortowaniem listy dwukierunkowej. Poniżej wklejam kod funkcji. Program się wywala w tym miejscu:

 if(wsk->next->dane.cena_b<wsk->dane.cena_b)
 int sortuj2(el**head){

	int i=0,j,k;
	el*wsk;
	el*tmp1;
	el*tmp2;
	el*tmp3;
	wsk=*head;

	while(wsk!=NULL){
		wsk=wsk->next;
		i=i+1;
	}

	if(i<4)
		return wyjscie();

	for(j=0;j<i-1;j++){
		wsk=*head;
		for(k=0;k<i-j-1;k++){
			if(wsk->next->dane.cena_b<wsk->dane.cena_b){
				if(k==0){
					tmp1=wsk->next;
					tmp2=wsk->next->next;
					wsk->next=tmp2;
					wsk->prev=tmp1;
					tmp1->next=wsk;
					tmp1->prev=NULL;
					tmp2->prev=wsk;
				}
				if(k==i-2){
					tmp1=wsk->prev;
					tmp2=wsk->next;
					tmp1->next=tmp2;
					tmp2->prev=tmp1;
					tmp2->next=wsk;
					wsk->prev=tmp2;
					wsk->next=NULL;
				}
				else{
					tmp1=wsk->prev;
					tmp2=wsk->next;
					tmp3=wsk->next->next;
					tmp1->next=tmp2;
					tmp2->prev=tmp1;
					tmp2->next=wsk;
					wsk->prev=tmp2;
					wsk->next=tmp3;
					tmp3->prev=wsk;
				}
			}
			else
				wsk=wsk->next;
		}
	}

	return wyjscie();
}