Implementation of Queues

Since a queue is also a list, it can be implemented using an array or it can be implemented using a linked representation.

Array Implementation of a Stack

When an array is used to implement a queue, then the insert and delete operations are realized using the operations available on an array. The limitation of an array implementation is that the queue cannot grow and shrink dynamically as per the requirement.

#include <stdio.h>
#define MAX 10 /* The maximum size of the queue */
#include <stdlib.h>

void insert(int queue[], int *rear, int value)
{
   if(*rear < MAX-1)
   {
      *rear= *rear +1;
      queue[*rear] = value;
   }
   else
   {
      printf("The queue is full can not insert a value\n");
      exit(0);
   }
}

void delete(int queue[], int *front, int rear, int * value)
{
   if(*front == rear)
   {
      printf("The queue is empty can not delete a value\n");
      exit(0);
   }
   *front = *front + 1;
   *value = queue[*front];
}

int main()
{
   int queue[MAX];
   int front,rear;
   int n,value;
   front=rear=(-1);
   do
   {
      do
      {
            printf("Enter the element to be inserted\n");
         scanf("%d",&value);
         insert(queue,&rear,value);
         printf("Enter 1 to continue\n");
            scanf("%d",&n);
      } while(n == 1);

      printf("Enter 1 to delete an element\n");
      scanf("%d",&n);
      while( n == 1)
      {
            delete(queue,&front,rear,&value);
         printf("The value deleted is %d\n",value);
            printf("Enter 1 to delete an element\n");
         scanf("%d",&n);
      }
      printf("Enter 1 to continue\n");
      scanf("%d",&n);
   } while(n == 1);
   getchar();
   return 0;
}