C Program of the circular queue

Data Structure / Queue Data Structure

686

Program:

/*Program of circular queue*/
#include<stdio.h>
#include<stdlib.h>
#define MAX 10

int cqueue_arr[MAX];
int front=-1;
int rear=-1;

void display( );
void insert(item);
int del();
int peek();
int isEmpty();
int isFull();

main()
{
	int choice,item;
	while(1)
	{
		printf("1.Insert\n");
		printf("2.Delete\n");
		printf("3.Peek\n");
		printf("4.Display\n");
		printf("5.Quit\n");
		printf("Enter your choice : ");
		scanf("%d",&choice);

		switch(choice)
		{
		case 1 :
			printf("Input the element for insertion : ");
			scanf("%d",&item);
			insert(item);
			break;
		case 2 :
			printf("Element deleted is : %d\n",del());
			break;
		case 3:
			printf("Element at the front is  : %d\n",peek());
			break;
		case 4:
			display();
			break;
		case 5:
			exit(1);
		default:
			printf("Wrong choice\n");
		}/*End of switch*/
	}/*End of while */
}/*End of main()*/

void insert(int item)
{
	if( isFull() )
	{
		printf("Queue Overflow\n");
		return;
	}
	if(front == -1 )  
		front=0;
	
	if(rear==MAX-1)/*rear is at last position of queue*/
		rear=0;
	else
		rear=rear+1;
	cqueue_arr[rear]=item ;
}/*End of insert()*/

int del()
{
	int item;
	if( isEmpty() )
	{
		printf("Queue Underflow\n");
		exit(1);
	}
	item=cqueue_arr[front];
	if(front==rear) /* queue has only one element */
	{
		front=-1;
		rear=-1;
	}
	else if(front==MAX-1)
		front=0;
	else
		front=front+1;
	return item;
}/*End of del() */

int isEmpty()
{
	if(front==-1)
		return 1;
	else
		return 0;
}/*End of isEmpty()*/

int isFull()
{
	if((front==0 && rear==MAX-1) || (front==rear+1))
		return 1;
	else
		return 0;
}/*End of isFull()*/

int peek()
{
	if( isEmpty() )
	{
		printf("Queue Underflow\n");
		exit(1);
	}
	return cqueue_arr[front];
}/*End of peek()*/

void display()
{
	int i;
	if(isEmpty())
	{
		printf("Queue is empty\n");
		return;
	}
	printf("Queue elements :\n");
	i=front;
	if( front<=rear )
	{
		while(i<=rear)
			printf("%d ",cqueue_arr[i++]);
	}
	else
	{
		while(i<=MAX-1)
			printf("%d ",cqueue_arr[i++]);
		i=0;
		while(i<=rear)
			printf("%d ",cqueue_arr[i++]);
	}
	printf("\n");
}/*End of display() */

Output:

1.Insert
2.Delete
3.Peek
4.Display
5.Quit
Enter your choice : 1
Input the element for insertion : 12
1.Insert
2.Delete
3.Peek
4.Display
5.Quit
Enter your choice : 3
Element at the front is  : 12
1.Insert
2.Delete
3.Peek
4.Display
5.Quit
Enter your choice : 1
Input the element for insertion : 13
1.Insert
2.Delete
3.Peek
4.Display
5.Quit
Enter your choice : 4
Queue elements :
12 13
1.Insert
2.Delete
3.Peek
4.Display
5.Quit
Enter your choice : 5
Press any key to continue . . .

Explanation:

nope

This Particular section is dedicated to Programs only. If you want learn more about Data Structure. Then you can visit below links to get more depth on this subject.