Pass tests
This commit is contained in:
parent
64f9b63215
commit
025b2640fc
@ -79,6 +79,14 @@ void destroyDiskQueue(DiskQueue *queue) {
|
||||
free(queue);
|
||||
}
|
||||
|
||||
int calcDistance(int position, int destination) {
|
||||
if (position > destination) {
|
||||
return destination + (10000 - position);
|
||||
} else {
|
||||
return destination - position;
|
||||
}
|
||||
}
|
||||
|
||||
DiskRequest* findClosest(DiskQueue *queue, int position, double time) {
|
||||
DiskRequest *current = queue->head;
|
||||
DiskRequest *closest = NULL;
|
||||
@ -87,20 +95,14 @@ DiskRequest* findClosest(DiskQueue *queue, int position, double time) {
|
||||
if (closest == NULL) { // If there is no closest yet, set it to the current
|
||||
closest = current;
|
||||
} else {
|
||||
int closestDistance = closest->position - position; // Distance from the closest to the current position, negative means down (bad)
|
||||
int currentDistance = current->position - position; // Distance from the current to the current position, negative means down (bad)
|
||||
if (currentDistance > 0) { // If the current is up
|
||||
if (currentDistance < closestDistance) { // If the current is closer than the closest
|
||||
closest = current;
|
||||
}
|
||||
int closestDistance = calcDistance(position, closest->position); // Distance from the closest to the current position, negative means down (bad)
|
||||
int currentDistance = calcDistance(position, current->position); // Distance from the current to the current position, negative means down (bad
|
||||
if (currentDistance < closestDistance) { // If the current is closer than the closest
|
||||
closest = current;
|
||||
}
|
||||
}
|
||||
}
|
||||
current = current->next;
|
||||
}
|
||||
// Bad
|
||||
if (closest == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return closest;
|
||||
}
|
||||
}
|
@ -28,3 +28,5 @@ DiskRequest *dequeue(DiskQueue *queue);
|
||||
DiskRequest *findClosest(DiskQueue *queue, int position, double time);
|
||||
|
||||
void destroyDiskQueue(DiskQueue *queue);
|
||||
|
||||
int calcDistance(int position, int destination);
|
||||
|
Loading…
Reference in New Issue
Block a user