C Program of the queue using the circular linked list

Data Structure / Queue Data Structure

685

Program:

/* Program of the queue using circular linked list*/

#include<stdio.h>
#include<stdlib.h>

struct node
{
	int info;
	struct node *link;
}*rear=NULL;

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

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("Enter the element for insertion : ");
			scanf("%d",&item);
			insert(item);
			break;
		 case 2:
			printf("Deleted element is %d\n",del());	
			break;
		 case 3:
			printf("Item at the front of queue 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)
{
	struct node *tmp;
	tmp=(struct node *)malloc(sizeof(struct node));
	tmp->info=item;
	if(tmp==NULL)
	{
		printf("Memory not available\n");
		return;
	}
	
	if( isEmpty() ) /*If queue is empty */
	{
		rear=tmp;
		tmp->link=rear;
	}
	else
	{
		tmp->link=rear->link;
		rear->link=tmp;
		rear=tmp;
	}
}/*End of insert()*/

del()
{
	int item;
	struct node *tmp;
	if( isEmpty() )
	{
		printf("Queue underflow\n");
		exit(1);
	}
	if(rear->link==rear)  /*If only one element*/
	{
		tmp=rear;
		rear=NULL;
	}
	else
	{
		tmp=rear->link;
		rear->link=rear->link->link;
	}
	item=tmp->info;
	free(tmp);
	return item;
}/*End of del()*/

int peek()
{
	if( isEmpty() )
	{
		printf("Queue underflow\n");
		exit(1);
	}
	return rear->link->info;
}/* End of peek() */

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


void display()
{
	struct node *p;
	if(isEmpty())
	{
		printf("Queue is empty\n");
		return;
	}
	printf("Queue is :\n");
	p=rear->link;
	do
	{
		printf("%d ",p->info);
		p=p->link;
	}while(p!=rear->link);
	printf("\n");
}/*End of display()*/

Output:

1.Insert
2.Delete
3.Peek
4.Display
5.Quit
Enter your choice : 1
Enter the element for insertion : 12
1.Insert
2.Delete
3.Peek
4.Display
5.Quit
Enter your choice : 3
Item at the front of queue is 12
1.Insert
2.Delete
3.Peek
4.Display
5.Quit
Enter your choice : 1
Enter the element for insertion : 15
1.Insert
2.Delete
3.Peek
4.Display
5.Quit
Enter your choice : 4
Queue is :
12 15
1.Insert
2.Delete
3.Peek
4.Display
5.Quit
Enter your choice : 2
Deleted element is 12
1.Insert
2.Delete
3.Peek
4.Display
5.Quit
Enter your choice : 4
Queue is :
15
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.