C Tutorial/Data Structure/Queue

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

A queue based on the linked list

<source lang="cpp"># include <stdio.h>

  1. 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>

  1. include <stdlib.h>
  2. 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

  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>