Guest User

1.h

a guest
Oct 16th, 2017
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.60 KB | None | 0 0
  1. #ifndef PROGRAMA_5_5_H
  2. #define PROGRAMA_5_5_H
  3. /* Definición del número máximo de elementos que puede contener la cola,
  4. restricción que surge de usar un arregolo unidimencional. */
  5. #define MAX 3
  6.  
  7. /* Definición de la plantilla de la clase Cola. Se utiliza sobrecarga de
  8. operadores y se define a los métodos de inserción y eliminación como
  9. métodos enteros. */
  10. template <class T>
  11. class Cola
  12. {
  13.     private:
  14.         T EspacioCola[MAX];
  15.         int Frente, Final;
  16.     public:
  17.         Cola();
  18.         int operator +(T);
  19.         int operator -(T*);
  20.         int ColaLlena();
  21.         int ColaVacia();
  22. };
  23.  
  24. /* Declaración del método constructor. Inicializa los punteros en -1,
  25. indicando que la cola está vacía. */
  26. template <class T>
  27. Cola<T>::Cola()
  28. {
  29.     Frente = -1;
  30.     Final  = -1;
  31. }
  32.  
  33. /* Método que inserta un valor en la cola. La inserción se lleva a cabo por
  34. el extremo identificado como Final. Antes de llevar a cabo la inserción se
  35. verifica que la cola tenga espacio disponible. Si la operación concluye con
  36. éxito el método regresa un 1, en caso contrario un 0. */
  37. template <class T>
  38. int Cola<T>::operator +(T Dato)
  39. {
  40.     /* La variable Res se inicializa en 0 (fracaso). Si la inserción se lleva
  41.     a cabo, entonces se le asignará el valor de 1 (éxito). */
  42.     int Res = 0;
  43.     if(ColaLlena() != 1)
  44.     {
  45.         EspacioCola[++Final] = Dato;
  46.         if(Final == 0)
  47.             Frente = 0;
  48.         Res = 1;
  49.     }
  50.     return Res;
  51. }
  52.  
  53. /* Método que elimina un elemento de la cola. La eliminación se lleva a
  54. cabo por el extremo identificado como Frente. Antes de quitar el
  55. elemento se debe validar que la cola no esté vacía. El valor eliminado
  56. se regresa por medio de un parámetro por referencia. Si la operación
  57. concluye con éxito el método regresa un 1, en caso contrario un 0. */
  58. template <class T>
  59. int Cola<T>::operator -(T *Dato)
  60. {
  61.     /* La variable Res se inicializa en 0 (fracaso). Si la eliminación se
  62.     lleva a cabo, entonces se le asignará el valor de 1 (éxito). */
  63.     int Res = 0;
  64.     int i;
  65.  
  66.     if (!ColaVacia())
  67.     {
  68.         *Dato = EspacioCola[Frente];
  69.         if (Frente == Final)
  70.         {
  71.             Frente = -1;
  72.             Final  = -1;
  73.         }
  74.         else
  75.             Frente++;            
  76.         Res = 1;
  77.     }
  78.     return Res;
  79. }
  80.  
  81. /* Método auxiliar que verifica si la cola está llena. Regresa 1 si la
  82. cola no tiene espacio disponible y 0 en caso contrario. */
  83. template <class T>
  84. int Cola<T>::ColaLlena()
  85. {
  86.     if(Final == MAX-1)
  87.         return 1;
  88.     else
  89.         return 0;
  90. }
  91.  
  92. /* Método auxiliar que verifica si la cola está vacía. Regresa 1 si la
  93. cola no tiene ningún elemento y 0 en caso contrario. */
  94. template <class T>
  95. int Cola<T>::ColaVacia()
  96. {
  97.     if(Frente == -1)
  98.         return 1;
  99.     else
  100.         return 0;
  101. }
  102.  
  103. #endif
Add Comment
Please, Sign In to add comment