ahamed210

queue

Sep 21st, 2020
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.91 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define Q_size 5
  4.  
  5. typedef struct{
  6.     int data[Q_size+1];
  7.     int head, tail;
  8. }queue;
  9.  
  10. //enqueue
  11. void enqueue(queue *q, int item)
  12. {
  13.     if((q->tail+1)%(Q_size+1) == q->head){
  14.         printf("Queue is full\n");
  15.         return;
  16.     }
  17.     q->data[q->tail] = item;
  18.     q->tail = (q->tail+1)%(Q_size+1);
  19. }
  20.  
  21. //dequeue
  22. int dequeue(queue *q)
  23. {
  24.     int item;
  25.     if(q->tail == q->head){
  26.         printf("Queue is empty\n");
  27.         return -1;
  28.     }
  29.     item = q->data[q->head];
  30.     q->head = (q->head+1) % (Q_size+1);
  31.     return item;
  32. }
  33. int main()
  34. {
  35.     queue my_q;
  36.     int item;
  37.     my_q.head = 0;
  38.     my_q.tail = 0;
  39.  
  40.     //First enqueue 3 numbers
  41.     enqueue(&my_q, 1);
  42.     printf("Tail = %d\n", my_q.tail);
  43.     enqueue(&my_q, 2);
  44.     printf("Tail = %d\n", my_q.tail);
  45.     enqueue(&my_q, 3);
  46.     printf("Tail = %d\n", my_q.tail);
  47.     //dequeue 2 numbers
  48.     printf("Beginning head = %d\n", my_q.head);
  49.     item = dequeue(&my_q);
  50.     printf("item = %d, head=%d\n", item, my_q.head);
  51.     item = dequeue(&my_q);
  52.     printf("item = %d, head=%d\n", item, my_q.head);
  53.     // enqueue 3 numbers
  54.     enqueue(&my_q, 4);
  55.     printf("Tail = %d\n", my_q.tail);
  56.     enqueue(&my_q, 5);
  57.     printf("Tail = %d\n", my_q.tail);
  58.     enqueue(&my_q, 6);
  59.     printf("Tail = %d\n", my_q.tail);
  60.  
  61.     //dequeue 4 numbers
  62.     printf("Beginning head = %d\n", my_q.head);
  63.     /*item = dequeue(&my_q);
  64.     printf("item = %d, head=%d\n", item, my_q.head);
  65.     item = dequeue(&my_q);
  66.     printf("item = %d, head=%d\n", item, my_q.head);*/
  67.     item = dequeue(&my_q);
  68.     printf("item = %d, head=%d\n", item, my_q.head);
  69.     item = dequeue(&my_q);
  70.     printf("item = %d, head=%d\n", item, my_q.head);
  71.     item = dequeue(&my_q);
  72.     printf("item = %d, head=%d\n", item, my_q.head);
  73.     item = dequeue(&my_q);
  74.     printf("item = %d, head=%d\n", item, my_q.head);
  75.     //if we dequeue here queue will be empty
  76.     // enqueue 2 number
  77.     enqueue(&my_q, 4);
  78.     printf("Tail = %d\n", my_q.tail);
  79.     enqueue(&my_q, 5);
  80.     printf("Tail = %d\n", my_q.tail);
  81.     //dequeue 2 number
  82.     printf("Beginning head = %d\n", my_q.head);
  83.     item = dequeue(&my_q);
  84.     printf("item = %d, head=%d\n", item, my_q.head);
  85.     item = dequeue(&my_q);
  86.     printf("item = %d, head=%d\n", item, my_q.head);
  87.     //queue is empty
  88.     item = dequeue(&my_q);
  89.     printf("item = %d, head=%d\n", item, my_q.head);
  90.     //now if we want to enqueue again 2 number
  91.     enqueue(&my_q, 4);
  92.     printf("Tail = %d\n", my_q.tail);
  93.     enqueue(&my_q, 5);
  94.     printf("Tail = %d\n", my_q.tail);
  95.     //dequeue 2 number
  96.     printf("Beginning head = %d\n", my_q.head);
  97.     item = dequeue(&my_q);
  98.     printf("item = %d, head=%d\n", item, my_q.head);
  99.     item = dequeue(&my_q);
  100.     printf("item = %d, head=%d\n", item, my_q.head);
  101.     item = dequeue(&my_q);
  102.     printf("item = %d, head=%d\n", item, my_q.head);
  103.     return 0;
  104. }
  105.  
Advertisement
Add Comment
Please, Sign In to add comment