Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #define Q_size 5
- typedef struct{
- int data[Q_size+1];
- int head, tail;
- }queue;
- //enqueue
- void enqueue(queue *q, int item)
- {
- if((q->tail+1)%(Q_size+1) == q->head){
- printf("Queue is full\n");
- return;
- }
- q->data[q->tail] = item;
- q->tail = (q->tail+1)%(Q_size+1);
- }
- //dequeue
- int dequeue(queue *q)
- {
- int item;
- if(q->tail == q->head){
- printf("Queue is empty\n");
- return -1;
- }
- item = q->data[q->head];
- q->head = (q->head+1) % (Q_size+1);
- return item;
- }
- int main()
- {
- queue my_q;
- int item;
- my_q.head = 0;
- my_q.tail = 0;
- //First enqueue 3 numbers
- enqueue(&my_q, 1);
- printf("Tail = %d\n", my_q.tail);
- enqueue(&my_q, 2);
- printf("Tail = %d\n", my_q.tail);
- enqueue(&my_q, 3);
- printf("Tail = %d\n", my_q.tail);
- //dequeue 2 numbers
- printf("Beginning head = %d\n", my_q.head);
- item = dequeue(&my_q);
- printf("item = %d, head=%d\n", item, my_q.head);
- item = dequeue(&my_q);
- printf("item = %d, head=%d\n", item, my_q.head);
- // enqueue 3 numbers
- enqueue(&my_q, 4);
- printf("Tail = %d\n", my_q.tail);
- enqueue(&my_q, 5);
- printf("Tail = %d\n", my_q.tail);
- enqueue(&my_q, 6);
- printf("Tail = %d\n", my_q.tail);
- //dequeue 4 numbers
- printf("Beginning head = %d\n", my_q.head);
- /*item = dequeue(&my_q);
- printf("item = %d, head=%d\n", item, my_q.head);
- item = dequeue(&my_q);
- printf("item = %d, head=%d\n", item, my_q.head);*/
- item = dequeue(&my_q);
- printf("item = %d, head=%d\n", item, my_q.head);
- item = dequeue(&my_q);
- printf("item = %d, head=%d\n", item, my_q.head);
- item = dequeue(&my_q);
- printf("item = %d, head=%d\n", item, my_q.head);
- item = dequeue(&my_q);
- printf("item = %d, head=%d\n", item, my_q.head);
- //if we dequeue here queue will be empty
- // enqueue 2 number
- enqueue(&my_q, 4);
- printf("Tail = %d\n", my_q.tail);
- enqueue(&my_q, 5);
- printf("Tail = %d\n", my_q.tail);
- //dequeue 2 number
- printf("Beginning head = %d\n", my_q.head);
- item = dequeue(&my_q);
- printf("item = %d, head=%d\n", item, my_q.head);
- item = dequeue(&my_q);
- printf("item = %d, head=%d\n", item, my_q.head);
- //queue is empty
- item = dequeue(&my_q);
- printf("item = %d, head=%d\n", item, my_q.head);
- //now if we want to enqueue again 2 number
- enqueue(&my_q, 4);
- printf("Tail = %d\n", my_q.tail);
- enqueue(&my_q, 5);
- printf("Tail = %d\n", my_q.tail);
- //dequeue 2 number
- printf("Beginning head = %d\n", my_q.head);
- item = dequeue(&my_q);
- printf("item = %d, head=%d\n", item, my_q.head);
- item = dequeue(&my_q);
- printf("item = %d, head=%d\n", item, my_q.head);
- item = dequeue(&my_q);
- printf("item = %d, head=%d\n", item, my_q.head);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment