File d’attente de l’opération
Ici on l’expliquera un peu sur la mise en œuvre de la file d’attente avec Premtive (priorité).
Sans plus tarder immédiatement écrit à coder eux-mêmes :
Tout d’abord saisir le code ci-dessous et enregistrez-le sous interface.h :
#include
#include
#define Error(Str) FatalError(Str)
#define FatalError(Str) fprintf (stderr, « %s\n », Str), sortie (1)
Puis, enregistrez le code du fichier queue.h ci-dessous :
#ifndef _Queue_h
#define _Queue_h
typedef int ElementType ;
struct QueueRecord ;
typedef struct QueueRecord * en file d’attente ;
File d’attente CreateQueue(int MaxElements) ;
void Enqueue (X ElementType, file d’attente Q) ;
ElementType Front(Queue Q) ;
void Dequeue (Queue Q) ;
void Preemptive (X ElementType, file d’attente Q) ;
void DisposeQueue(Queue Q) ;
void MakeEmpty(Queue Q) ;
int IsEmpty (Queue Q) ;
int IsFull (Queue Q) ;
#endif
Tapez le code ci-dessous, puis enregistrez le fichier sous une implémentation avec queue.c :
#include « queue.h »
#include « fatal.h »
#include
struct QueueRecord {}
int capacité ;
int avant ;
int arrière ;
int taille ;
ElementType * Array ;
};
public static int Succ (int valeur, file d’attente Q) ;
void Enqueue (X ElementType, file d’attente Q) {}
if(IsFull(Q))
Erreur ("file d’attente pleine") ;
else {}
Q -> taille ++ ;
Q -> Array [Q -> arrière] = X ;
Q -> arrière = Succ (Q -> arrière, Q) ;
}
}
File d’attente CreateQueue(int MaxElements) {}
File d’attente Q = NULL ;
Q = malloc (sizeof(struct QueueRecord)) ;
if(Q==null)
Erreur fatale ("espace insuffisant!!!") ;
Q -> Array=malloc(sizeof(ElementType) * MaxElements) ;
Si (Q -> tableau == NULL)
Erreur fatale ("espace insuffisant!!!") ;
Q -> capacité = MaxElements ;
MakeEmpty(Q) ;
Retour à Q ;
}
void Preemptive (X ElementType, file d’attente Q) {}
if(IsFull(Q))
Erreur ("file d’attente pleine") ;
else {}
Q -> taille ++ ;
Q -> Array [Q -> Front] = X ;
Q -> arrière = Succ (Q -> arrière, Q) ;
}
}
ElementType Front(Queue Q) {}
if (!. IsEmpty(Q))
Q -> tableau de retour [Q -> Front] ;
Erreur ("file d’attente vide") ;
return 0 ;
}
Sub Dequeue (Queue Q) {}
if(IsEmpty(Q))
Erreur ("file d’attente vide") ;
else {}
Q -> taille--;
Q avant -> = Succ (Q -> Front, Q) ;
}
}
void DisposeQueue(Queue Q) {}
Si (Q! = NULL) {}
gratuit (Q -> tableau) ;
Free(Q) ;
}
}
public static int Succ (int valeur, file d’attente Q) {}
Si (++ valeur == Q -> capacité)
Valeur = 0 ;
Return Value ;
}
void MakeEmpty(Queue Q) {}
Q -> Size = 0 ;
Q avant -> = 0 ;
Q -> arrière = 0 ;
}
int IsEmpty (Queue Q) {}
Retour à Q -> taille == 0 ;
}
int IsFull (Queue Q) {}
Retour à Q -> taille == Q -> capacité ;
}
Enregistrez le fichier avec le klien.c quatrième nom qui fonctionne comme un client
#include
#include « queue.h »
int main() {}
File d’attente Q ;
int i ;
int n = 20 ;
public static int max_queue_size = 20 ;
Q = CreateQueue(max_queue_size) ;
Preemptive(90,Q) ;
printf("%d\t",Front(Q)) ;
Dequeue(Q) ;
pour (i = 0; i
pour (i = 0; i
{if(Q!=null)}
Si (i %2 == 0) {}
Enqueue(i,Q) ;
}
}
if(i%2==0)
printf("%d,",i) ;
}
}
DisposeQueue(Q) ;
return 0 ;
}
Une fois compilé, il affichera résulte de la somme des numéros pair d’affilée depuis le début de 0 à 18 ans. Résultats de la somme est numéro 90. Nombre est que la série est :
90 0,2,4,6,8,10,12,14,16,18.