Les files d'attente sont FIFO (first in first out) linéaire forme, dénommé FIFO.
Supposons que les files d'attente circulaires:
Le chef d'équipe: avant
La queue: arrière
Taille maximale: Taille de la file d'attente
File d'attente pleine: (arrière + 1)% de la taille de file d'attente avant ==
longueur de file d'attente commune est calculée: (arrière - taille de file d'attente avant +)% de la taille de file d'attente
Structure de stockage de code d'échantillon
typedef int QElemType; / * type de données dans la file d'attente * /
/ * Structure de stockage séquentiel file d'attente circulaire * /
typedef struct
{
Date QElemType [MAXSIZE];
face int / * pointeur de tête * /
int arrière; / * pointeur de queue, si la file d'attente est vide non, un point sur la position enqueue * /
} SqQueue;
/ * Initialiser une file d'attente vide * /
int InitQueue (SqQueue * Q)
{
Q-> devant = 0;
Q-> arrière = 0;
retour OK;
}
/ * Trouver une longueur de file d'attente circulaire * /
int QueueLenght (SqQueue * Q)
{
retour (Q.rear - Q.front + MAXSIZE)% MAXSIZE;
}
/ * Opération Enqueue file d'attente circulaire * /
int Enqueue (SqQueue * Q, QElemType e)
{
if ((Q-> arrière + 1)% MAXSIZE == Q-> avant) / * * file d'attente déterminée plein /
retourner erreur;
Q-> data [Q-> arrière] = e; / * * d'un nouvel élément à la queue /
Q-> = arrière (Q-> arrière + 1)% MAXSIZE; pointeur / * se déplace l'une après l'arrière * /
/ * Si vous allez à la dernière rangée de tête * /
retour OK;
}
/ * File d'attente circulaire Dequeue * /
int Enqueue (SqQueue * Q, QElemType * e)
{
if (Q-> Q- arrière ==> avant) / * file d'attente d'analyse est vide * /
retourner erreur;
* E = Q-> data [Q-> avant]; / * les éléments de la tête à e * /
Q-> = avant (Q-> avant + 1)% MAXSIZE; / * le curseur se déplace en arrière avant un * /
/ * Si vous allez à la dernière rangée de tête * /
retour OK;
}