C Tutorial/Data Structure/Queue
A queue based on the linked list
<source lang="cpp"># 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);
}</source>
The value deleted is 1 The value deleted is 2 The value deleted is 3
Array Implementation of a Stack
<source lang="cpp">#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);
}</source>
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>