C Tutorial/Data Structure/Queue
A queue based on the linked list
# 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 Error\n");
exit(0);
}
temp->data = value;
temp->link=NULL;
if(*rear == NULL)
{
*rear = temp;
*front = *rear;
}
else
{
(*rear)->link = temp;
*rear = temp;
}
}
void delete(struct node **front, struct node **rear, int *value)
{
struct node *temp;
if((*front == *rear) && (*rear == NULL))
{
printf(" The queue is empty cannot 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;
insert(&front,&rear,1);
insert(&front,&rear,2);
insert(&front,&rear,3);
insert(&front,&rear,4);
delete(&front,&rear,&value);
printf("The value deleted is %d\n",value);
delete(&front,&rear,&value);
printf("The value deleted is %d\n",value);
delete(&front,&rear,&value);
printf("The value deleted is %d\n",value);
}
The value deleted is 1 The value deleted is 2 The value deleted is 3
Array Implementation of a Stack
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
void insert(int queue[], int *rear, int value)
{
if(*rear < MAX-1)
{
*rear= *rear +1;
queue[*rear] = value;
}
else
{
printf("The queue is full can not insert a value\n");
exit(0);
}
}
void delete(int queue[], int *front, int rear, int * value)
{
if(*front == rear)
{
printf("The queue is empty can not delete a value\n");
exit(0);
}
*front = *front + 1;
*value = queue[*front];
}
void main()
{
int queue[MAX];
int front,rear;
int n,value;
front = rear = -1;
insert(queue,&rear,1);
insert(queue,&rear,2);
delete(queue,&front,rear,&value);
printf("The value deleted is %d\n",value);
}
The value deleted is 1
Queues
- A queue is a list with insertions at one end and deletions at the other end.
- A queue exhibits the FIFO (first in first out) property.
14.3.Queue 14.3.1. Queues 14.3.2. <A href="/Tutorial/C/0260__Data-Structure/ArrayImplementationofaStack.htm">Array Implementation of a Stack</a> 14.3.3. <A href="/Tutorial/C/0260__Data-Structure/Aqueuebasedonthelinkedlist.htm">A queue based on the linked list</a>