C Tutorial/Data Structure/Queue

Материал из C\C++ эксперт
Перейти к: навигация, поиск

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

  1. A queue is a list with insertions at one end and deletions at the other end.
  2. 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>