私はこのコードで無限ループを修正しようとしています。しかし、なぜ無限ループが起こるのか理解できませんでした。このコードは、処理される前にジョブを最小から最大にソートしようとしています。なぜこの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;
}
}
}
デバッガでコードをステップ実行しようとしましたか? –