0
저는 노드에서 노드로 데이터를 교환하는 기능을 사용하여 체스 게임에서 동작을 정렬하려고합니다. 내 비교자는 0,1,2를 반환 할 수있는 함수 "isCapture"입니다. 결국 나는 목록이 2222 ... 11111 ... 000이되기를 바란다. 내가 지금까지 가지고있는 코드는 이것이다 :C : 링크 된 목록을 정렬하면 무한 루프가 발생합니까?
void sort(move_t* head, game_t game) {
move_t* move, *next;
int x1,y1,x2,y2;
char s;
move = head;
while(move != NULL)
{
next = move->next;
while(next != NULL)
{
if(((isCapture(game,move) == 0) && (isCapture(game,next)== 1)) ||
((isCapture(game,move) == 0) && (isCapture(game,next)== 2)) ||
((isCapture(game,move) == 1) && (isCapture(game,next)== 2)))
{
x1 = move->x1;
y1 = move->y1;
x2 = move->x2;
y2 = move->y2;
s = move->s;
move->x1 = next->x1;
move->y1 = next->y1;
move->x2 = next->x2;
move->y2 = next->y2;
move->s = next->s;
next->x1 = x1;
next->y1 = y1;
next->x2 = x2;
next->y2 = y2;
next->s = s;
if(isCapture(game,move) == 1)
next = next->next;
else
{
move = next;
next = next->next;
}
}
else if(((isCapture(game,move) == 2) && (isCapture(game,next)== 1)) ||
((isCapture(game,move) == 2) && (isCapture(game,next)== 2)) ||
((isCapture(game,move) == 2) && (isCapture(game,next)== 0)))
{
move = move-> next;
next = move-> next;
}
else
{
next = next->next;
}
}
move = move->next;
}
}
나는 오류의 혼합물지고있어 : 무한 루프를 무효 다음 크기 (고속) 및 손상 연결리스트. 코드를 살펴 봤지만 알아낼 수는 없습니다. 누구든지 내 코드를 확인할 수 있으면 고맙겠습니다. 감사.