Advertisement
ahamed210

queue1

Dec 1st, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.92 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. //display along with maximum element display
  11. void display(queue *q)
  12. {
  13.     int max = q->data[q->head];
  14.     int i = q->head;
  15.     do
  16.     {
  17.         /*if(q->tail == i){
  18.             printf("Queue is empty\n");
  19.         }
  20.         else{
  21.  
  22.             i = (i+1) % (Q_size+1);
  23.         }*/
  24.         if(q->data[i] > max)
  25.         {
  26.             max = q->data[i];
  27.         }
  28.         i = (i+1) % (Q_size+1);
  29.     } while(i != q->tail);
  30.     printf("\n\n%d\n", max);
  31. }
  32.  
  33. //enqueue
  34. void enqueue(queue *q, int item)
  35. {
  36.     if((q->tail+1)%(Q_size+1) == q->head){
  37.         printf("Queue is full\n");
  38.         return;
  39.     }
  40.     q->data[q->tail] = item;
  41.     q->tail = (q->tail+1)%(Q_size+1);
  42. }
  43.  
  44. //dequeue
  45. int dequeue(queue *q)
  46. {
  47.     int item;
  48.     if(q->tail == q->head){
  49.         printf("Queue is empty\n");
  50.         return -1;
  51.     }
  52.     item = q->data[q->head];
  53.     q->head = (q->head+1) % (Q_size+1);
  54.     return item;
  55. }
  56.  
  57. int main()
  58. {
  59.     queue my_q;
  60.     int item;
  61.     my_q.head = 0;
  62.     my_q.tail = 0;
  63.  
  64.     //First enqueue 3 numbers
  65.     enqueue(&my_q, 1);
  66.     printf("Tail = %d\n", my_q.tail);
  67.     enqueue(&my_q, 2);
  68.     printf("Tail = %d\n", my_q.tail);
  69.     enqueue(&my_q, 3);
  70.     printf("Tail = %d\n", my_q.tail);
  71.     //dequeue 2 numbers
  72.     printf("Beginning head = %d\n", my_q.head);
  73.     item = dequeue(&my_q);
  74.     printf("item = %d, head=%d\n", item, my_q.head);
  75.     item = dequeue(&my_q);
  76.     printf("item = %d, head=%d\n", item, my_q.head);
  77.     // enqueue 3 numbers
  78.     enqueue(&my_q, 4);
  79.     printf("Tail = %d\n", my_q.tail);
  80.     enqueue(&my_q, 5);
  81.     printf("Tail = %d\n", my_q.tail);
  82.     enqueue(&my_q, 6);
  83.     printf("Tail = %d\n", my_q.tail);
  84.     enqueue(&my_q, 7);
  85.     printf("Tail = %d\n", my_q.tail);
  86.  
  87.     item = dequeue(&my_q);
  88.     display(&my_q);
  89.  
  90.     return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement