#pragma once typedef struct DiskRequest { int position; int time; } DiskRequest; typedef struct DiskQueue { DiskRequest *requests; int size; } DiskQueue; typedef enum DiskDirection { UP, DOWN } DiskDirection; DiskQueue *createDiskQueue(); DiskRequest diskRequest(int position, int time); void enqueue(DiskQueue *queue, DiskRequest request); DiskRequest delete(DiskQueue *queue, DiskRequest request); DiskQueue *clone(DiskQueue *queue); DiskRequest peek(DiskQueue *queue); DiskRequest dequeue(DiskQueue *queue); DiskQueue *queueOfLesserTime(DiskQueue *queue, double time); int compareDiskRequestsByPosition(const void *a, const void *b); DiskQueue *sortQueueByPosition(DiskQueue *queue); void destroyDiskQueue(DiskQueue *queue);