Advertisement
Fer072

Untitled

May 21st, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. #ifndef COLA_H_INCLUDED
  2. #define COLA_H_INCLUDED
  3.  
  4. #include<iostream>
  5. #include"assert.h"
  6. #include "Eslabon.h"
  7.  
  8. template <typename E>
  9. class ColaDinamica
  10. {
  11. private:
  12.  
  13. Eslabon<E> *frente;
  14. Eslabon<E> *atras;
  15. public:
  16. int tamanio;
  17. ColaDinamica(void);
  18. ~ColaDinamica(void);
  19. void vaciar(void);
  20. void encolar(const E &item);
  21. E descolar(void);
  22. const E &valorAlFrente(void)const;
  23. int obtenerTamanio(void)const;
  24. void mostrar();
  25. };
  26. template <typename E>
  27. ColaDinamica<E>::ColaDinamica(void)
  28. {
  29. frente=atras=new Eslabon<E>(NULL);
  30. tamanio=0;
  31. }
  32. template <typename E>
  33. ColaDinamica<E>::~ColaDinamica(void)
  34. {
  35. vaciar();
  36. }
  37. template <typename E>
  38. void ColaDinamica<E>::vaciar(void)
  39. {
  40. while(frente->siguiente!=NULL)
  41. {
  42. atras=frente;
  43. frente=frente->siguiente;
  44. delete atras;
  45. }
  46. atras=frente;
  47. tamanio=0;
  48. }
  49. template <typename E>
  50. void ColaDinamica<E>::encolar(const E &item)
  51. {
  52. atras=atras->siguiente=new Eslabon<E>(item,NULL);
  53. tamanio++;
  54. }
  55. template <typename E>
  56. E ColaDinamica<E>::descolar(void)
  57. {
  58. E item=frente->siguiente->elemento;
  59. if(tamanio==1)
  60. {
  61. delete atras;
  62. frente=atras;
  63. }
  64. else
  65. {
  66. Eslabon <E> *tmp=frente->siguiente;
  67. frente->siguiente=tmp->siguiente;
  68. delete tmp;
  69. tamanio--;
  70. }
  71. return item;
  72. }
  73. template <typename E>
  74. inline const E &ColaDinamica<E>::valorAlFrente(void)const
  75. {
  76. return frente->siguiente->elemento;
  77. }
  78. template <typename E>
  79. inline int ColaDinamica<E>::obtenerTamanio(void)const
  80. {
  81. return tamanio;
  82. }
  83. template <typename E>
  84. void ColaDinamica<E>::mostrar(void)
  85. {
  86. Eslabon<E> *temporal=frente->siguiente;
  87. E item;
  88. int cont=0;
  89. while (temporal!=NULL){
  90. item=temporal->elemento;
  91. temporal=temporal->siguiente;
  92. cout<<++cont<<": "<<item<<endl;
  93. }
  94. }
  95.  
  96. #endif // COLA_H_INCLUDED
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement