이 코드에서 무한 루프를 수정하려고했습니다. 그러나 무한 루프가 발생하는 이유를 이해할 수 없습니다. 이 코드는 처리되기 전에 가장 작은 것부터 가장 큰 것까지 작업을 정렬하려고합니다.이 C 코드 조각이 무한 루프로 끝나는 이유는 무엇입니까?
SortJobs()
{
linked_list ptr, h, temp, pptr;
int i, j;
pptr = ready_queue;
ptr = ready_queue->next;
h= ready_queue;
while(ptr != NULL) {
if ((ready_queue->pcb.job_length - ready_queue->pcb.run_time) > (ptr->pcb.job_length - ptr->pcb.run_time)) {
ready_queue = ptr;
pptr->next = ptr->next;
ptr->next = h->next;
h->next = pptr->next;
pptr->next = h;
ptr=h->next;
h=ready_queue;
pptr=ptr->next;
} else {
pptr = ptr;
ptr=ptr->next;
}
}
}
디버거에서 코드를 단계별로 실행 해 보았습니까? –