39 lines
786 B
C
39 lines
786 B
C
#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);
|
|
|