# Queue implementation using linked list.

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;
};
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;
if(*rear == NULL)
{
*rear = temp;
*front = *rear;
}
else
{
*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;
if(*rear == temp)
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);
}```