You are currently viewing Easy Linear Queue implementing code using structure

Easy Linear Queue implementing code using structure

Code for implementing Linear Queue

This code is designed for implementing all the functions available in Linear Queue. In this code structure is used for maintaining the approach. As we know Queue follows FIFO concept, so here we have designed Enqueue() and Dequeue() functions as per the concept. We have used structure type pointer as parameter in the above mentioned functions. We have used the easiest way to implement all the functions in Linear Queue.

 For Such more codes click here and for video tutorial click here.

				
					#include<stdio.h>

#include<stdlib.h>

#define max 50

typedef struct Queue {
  int val[max];
  int front, rear;
}
qu;

void enqueu(qu * , int);
int dequeu(qu * );
int peek(qu);

int isempty(qu);
int isfull(qu);

void disp(qu);

int main() {
  int ch, v;
  qu q;
  q.front = q.rear = -1;
  while (1) {
    printf("\n1) Insert \n2) Delete \n3) Front value\n4) Display\n5) Exit");
    printf("\n\nEnter the choice : ");
    scanf("%d", &ch);

    switch (ch) {
    case 1:
      if (!isfull(q)) {
        printf("\n Enter the value : ");
        scanf("%d", & v);
        enqueu( & q, v);
      } else
        printf("\nNo more space");
      break;
    case 2:
      if (!isempty(q)) {
        v = dequeu( & q);
        printf("\nThe deleted value from the front is %d", v);
      } else
        printf("\nNothing to delete");
      break;
    case 3:
      if (!isempty(q)) {
        printf("\nThe Value at the front is %d", peek(q));
      } else
        printf("\nNothing in the queue");
      break;
    case 4:
      if (!isempty(q)) {
        printf("\nValues are");
        disp(q);
      } else
        printf("\nNothing in the queue");
      break;
    case 5:
      exit(1);
    default:
      printf("\nNot in the menu");
    }
  }
}

void enqueu(qu * q, int f) {
  int i;
  if (q -> front == -1)
    q -> front = q -> rear = 0;
  else if (q -> rear == max - 1) {
    for (i = q -> front; i <= q -> rear; i++)
      q -> val[i - (q -> front)] = q -> val[i];
    q -> rear = i - (q -> front);
    q -> front = 0;
  } else
    q -> rear++;
  q -> val[q -> rear] = f;
}

int dequeu(qu * q) {
  int g;
  g = q -> val[q -> front];
  if (q -> front == q -> rear)
    q -> front = q -> rear = -1;
  else
    q -> front++;
  return g;
}

int peek(qu p) {
  return p.val[p.front];
}

int isempty(qu p) {
  if (p.front == -1)
    return 1;
  else
    return 0;
}

int isfull(qu q) {
  if (q.front == 0 && q.rear == max - 1)
    return 1;
  else
    return 0;
}

void disp(qu q) {
  int g;
  g = q.front;
  for (; g <= q.rear; g++)
    printf("\n%d", q.val[g]);
}
				
			

Leave a Reply