nathanaaaa

Untitled

Jan 21st, 2018
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.50 KB | None | 0 0
  1. /**
  2. * @file Liste.cpp
  3. * Projet sem06-cours-Cpp2
  4. * @author l'équipe pédagogique
  5. * @version 2 - 13/01/10
  6. * @brief Composant de liste en mémoire dynamique et extensible
  7. * Structures de données et algorithmes - DUT1 Paris 5
  8. */
  9.  
  10. #include <cassert>
  11. #include "Liste.h"
  12.  
  13. /**
  14. * @brief Initialiser une liste vide
  15. * la liste est allouée en mémoire dynamique
  16. * @see detruire, la liste est à désallouer en fin d’utilisation
  17. * @param[out] l : la liste à initialiser
  18. * @param[in] capa : capacité de la liste
  19. * @param[in] pas : pas d’extension de la liste
  20. * @pre capa>0 et pas>0
  21. */
  22. void initialiser(Liste& l, unsigned int capa, unsigned int pas) {
  23.     assert((capa>0) && (pas>0));
  24.     initialiser(l.c, capa, pas);
  25.     l.nb = 0;
  26. }
  27.  
  28. /**
  29. * @brief Désallouer une liste
  30. * @see initialiser, la liste a déjà été allouée en mémoire dynamique
  31. * @param[out] l : la liste
  32. */
  33. void detruire(Liste& l) {
  34.     detruire(l.c);
  35. }
  36.  
  37. /**
  38. * @brief Longueur de liste
  39. * @param[in] l : la liste
  40. * @return la longueur de la liste
  41. */
  42. unsigned int longueur(const Liste& l) {
  43.     return l.nb;
  44. }
  45.  
  46. /**
  47. * @brief Lire un élément de liste
  48. * @param[in] l : la liste
  49. * @param[in] pos : position de l'élément à lire
  50. * @return l'item lu en position pos
  51. * @pre 0<=pos<longueur(l)
  52. */
  53. MessageEnCours lire(const Liste& l, unsigned int pos) {
  54.     assert(pos<l.nb);
  55.     return lire(l.c, pos);
  56. }
  57.  
  58. /**
  59. * @brief Ecrire un item dans la liste
  60. * @param[in,out] l : la liste
  61. * @param[in] pos : position de l'élément à écrire
  62. * @param[in] it : l'item
  63. * @pre 0<=pos<longueur(l)
  64. */
  65. void ecrire(Liste& l, unsigned int pos, const MessageEnCours& it) {
  66.     assert(pos<l.nb);
  67.     ecrire(l.c, pos, it);
  68. }
  69.  
  70. /**
  71. * @brief Insérer un élément dans une liste
  72. * @param[in,out] l : la liste
  73. * @param[in] pos : la position à laquelle l'élément est inséré
  74. * @param[in] it : l'élément inséré
  75. * @pre 0<=pos<=longueur(l)
  76. * l’insertion est faite avant la position pos
  77. */
  78. void inserer(Liste& l, unsigned int pos, const MessageEnCours& it) {
  79.     assert(pos <= l.nb);
  80.     for (unsigned int i = l.nb; i>pos; i--) {
  81.         ecrire(l.c, i, lire(l.c, i - 1));
  82.     }
  83.     ecrire(l.c, pos, it);
  84.     l.nb++;
  85. }
  86.  
  87. /**
  88. * @brief Supprimer un élément dans une liste
  89. * @param[in,out] l : la liste
  90. * @param[in] pos : la position de l'élément à supprimer
  91. * @pre longueur(l)>0 et 0<=pos<longueur(l)
  92. */
  93. void supprimer(Liste& l, unsigned int pos) {
  94.     assert((l.nb != 0) && (pos<l.nb));
  95.     l.nb--;
  96.     for (unsigned int i = pos; i<l.nb; ++i)
  97.         ecrire(l.c, i, lire(l.c, i + 1));
  98. }
Add Comment
Please, Sign In to add comment