Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typedef struct URLS{
- char *complete;
- char *hostname;
- char *path;
- char *file;
- } URL;
- typedef struct Queues{
- URL **urls;
- int start, rear, size;
- } Queue;
- Queue *create_queue() {
- Queue *out = (Queue *)malloc(sizeof(Queue));
- out->urls = (URL **)malloc(sizeof(URL *)*MAX_URLS);
- out->size = 0;
- out->rear = -1;
- out->start = -1;
- return out;
- }
- void enqueue(Queue *queue, URL *url) {
- if (queue->size < MAX_URLS) {
- if ((queue->size == 0)) {
- queue->urls[0] = url;
- queue->start = 0;
- queue->rear = 0;
- queue->size = 1;
- }
- else if (queue->rear == MAX_URLS-1) {
- queue->urls[0] = url;
- queue->rear = 0;
- queue->size++;
- }
- else {
- queue->urls[queue->rear] = url;
- queue->rear++;
- queue->size++;
- }
- } else {
- fprintf(stderr, "Queue is full!\n");
- exit(0);
- }
- }
- URL *dequeue(Queue *queue) {
- if (queue->size == 0) {
- fprintf(stderr, "Queue is Empty!\n");
- return NULL;
- } else if (queue->start==MAX_URLS-1) {
- queue->size--;
- queue->start=0;
- return queue->urls[MAX_URLS-1];
- } else {
- queue->size--;
- queue->start++;
- return queue->urls[queue->start-1];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement