Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.37 KB | None | 0 0
  1. typedef struct URLS{
  2.     char *complete;
  3.     char *hostname;
  4.     char *path;
  5.     char *file;
  6. } URL;
  7.  
  8. typedef struct Queues{
  9.     URL **urls;
  10.     int start, rear, size;
  11. } Queue;
  12.  
  13. Queue *create_queue() {
  14.     Queue *out = (Queue *)malloc(sizeof(Queue));
  15.     out->urls = (URL **)malloc(sizeof(URL *)*MAX_URLS);
  16.     out->size = 0;
  17.     out->rear = -1;
  18.     out->start = -1;
  19.     return out;
  20. }
  21.  
  22. void enqueue(Queue *queue, URL *url) {
  23.     if (queue->size < MAX_URLS) {
  24.         if ((queue->size == 0)) {
  25.             queue->urls[0] = url;
  26.             queue->start = 0;
  27.             queue->rear = 0;
  28.             queue->size = 1;
  29.         }
  30.         else if (queue->rear == MAX_URLS-1) {
  31.             queue->urls[0] = url;
  32.             queue->rear = 0;
  33.             queue->size++;
  34.         }
  35.         else {
  36.             queue->urls[queue->rear] = url;
  37.             queue->rear++;
  38.             queue->size++;
  39.         }
  40.     } else {
  41.         fprintf(stderr, "Queue is full!\n");
  42.         exit(0);
  43.     }
  44. }
  45.  
  46. URL *dequeue(Queue *queue) {
  47.     if (queue->size == 0) {
  48.         fprintf(stderr, "Queue is Empty!\n");
  49.         return NULL;
  50.     } else if (queue->start==MAX_URLS-1) {
  51.         queue->size--;
  52.         queue->start=0;
  53.         return queue->urls[MAX_URLS-1];
  54.     } else {
  55.         queue->size--;
  56.         queue->start++;
  57.         return queue->urls[queue->start-1];
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement