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();
}