Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @file FileAPriorité.cpp
- * @brief Codage de la fonction FileAPriorité
- * @author Samy Letombe, Nathan Pelissiere, Mohammed Senhadji
- * @version 1 20/12/17
- */
- #include <cassert>
- #include "FileAPriorité.h"
- #include "BlocData.h"
- /**
- * @brief initialiser une file vide
- * la file est allouée en mémoire dynamique
- * @see detruire, elle est à désallouer en fin d’utilisation
- * @param[out] f : la file à initialiser
- * @param[in] capa : capacité de la file (nb maximum d‘items stockés)
- * @pre capa>0
- */
- void initialiser(File& f, unsigned int capa) {
- assert(capa>0);
- initialiser(f.c, capa); // @see initialiser de ConteneurTD
- f.indPremier = 0;
- f.indProchain = 0;
- f.nb = 0;
- }
- /**
- * @brief Désallouer une file
- * @see initialiser, la file a déjà été allouée en mémoire dynamique
- * @param[out] f : la file
- */
- void detruire(File& f) {
- detruire(f.c); // @see detruire de ConteneurTD
- }
- /**
- * @brief Test de file pleine
- * @param[in] f : la file testée
- * @return true si f est pleine, false sinon
- */
- bool estPleine(const File& f) {
- return (f.nb == f.c.capacite); // @see type ConteneurTD
- }
- /**
- * @brief Test de file vide
- * @param[in] f : la file testée
- * @return true si f est vide, false sinon
- */
- bool estVide(const File& f) {
- return (f.nb == 0);
- }
- /**
- * @brief Lire l'item en tête de file
- * @param[in] f : la file
- * @return la valeur de l'item en tête de file
- * @pre la file n’est pas vide
- */
- BlocData tete(const File& f) {
- assert(!estVide(f));
- return lire(f.c, f.indPremier); // @see lire, dans ConteneurTD
- }
- /**
- * @brief Entrer un item dans la file
- * @param[in,out] f : la file
- * @param[in] it : l'item à entrer
- * @pre f n’est pas pleine
- */
- void entrer(File& f, const BlocData& it) {
- assert(!estPleine(f));
- BlocData C;
- bool testeur, fin = false;
- for (int i = 0; i < f.nb; ++i) {
- C = lire(f.c, i);
- testeur = enordre(it, C);
- if (testeur == true) {
- fin = true;
- for (unsigned int j = f.nb; j > i; j--) {
- ecrire(f.c, j, lire(f.c, j - 1));
- }
- ecrire(f.c, i, it);
- break;
- }
- }
- if (fin == false) {
- ecrire(f.c, f.indProchain, it);
- }
- f.indProchain = (f.indProchain + 1) % f.c.capacite;
- f.nb++;
- }
- /**
- * @brief Sortir l’item tête de file
- * @param[in,out] f : la file
- * @pre f n’est pas vide
- */
- void sortir(File& f) {
- assert(!estVide(f));
- f.indPremier = (f.indPremier+1)%f.c.capacite;
- f.nb--;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement