Share on Google+Share on Google+

Queue implementation using linked list.

Advertisement
This tutorial demonstrate how to implement queue using linked list.

Description:

The advantage of using linked list is that there is no size limit. The size of queue grow and shrink as per insertion and deletion takes place.

Code:

# include <stdio.h>
# include <stdlib.h>
struct node
{
int data;
struct node *link;
};
void insert(struct node **front, struct node **rear , int value)
{
struct node *temp;
temp=(struct node *)malloc(sizeof(struct node));
	if(temp==NULL)
	{
	printf("No Memory available\n");
	exit(0);
	}
	temp->data = value;
	temp->link=NULL;
	if(*rear == NULL)
	{
	*rear = temp;
	*front = *rear;
	}
	else
	{
	(*rear)->link = temp;
	*rear = temp;
	}
 }

void deleteQ(struct node **front, struct node **rear , int *value)
{
struct node *temp;
if((*front == *rear)  && (*rear == NULL))
{
printf(" The queue is empty can not delete Error\n");
exit(0);
}
	*value = (*front)->data;
	temp = *front;
	*front = (*front)->link;
	if(*rear == temp)
	*rear = (*rear)->link;
	free(temp);
	}

void main()
{
struct node *front=NULL,*rear = NULL;
int n,value;
do
{
  do
  {
   printf("Enter the element to be inserted\n");
   scanf("%d",&value);
   insert(&front,&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)
	{
	 deleteQ(&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);
}

Output

Download this code

Advertisements

Advertisement

Posted on: June 19, 2010 If you enjoyed this post then why not add us on Google+? Add us to your Circles

Share this Tutorial Follow us on Twitter, or add us on Facebook or Google Plus to keep you updated with the recent trends of Java and other open source platforms.