Guest User

Untitled

a guest
May 20th, 2018
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.79 KB | None | 0 0
  1.  
  2. #ifndef CListaH
  3. #define CListaH
  4. //---------------------------------------------------------------------------
  5. #endif
  6.  
  7.  
  8. template <class tipo>
  9. class Lista
  10. {
  11. private:
  12. template <class t>
  13. struct Nodo
  14. {
  15. t info;
  16. Nodo<t>* sig;
  17. }; //Nodo
  18.  
  19. int numElementos;
  20. Nodo<tipo>* primero;
  21. Nodo<tipo>* ultimo;
  22.  
  23. public:
  24. Lista()
  25. {
  26. numElementos = 0;
  27. primero = NULL;
  28. ultimo = NULL;
  29. } //Lista()
  30.  
  31. ~Lista()
  32. {
  33. Nodo<tipo>* pAuxiliar = NULL;
  34. while (numElementos != 0)
  35. {
  36. pAuxiliar = primero->sig;
  37. borrarInfo(primero->info);
  38. delete primero;
  39. primero = pAuxiliar;
  40. numElementos--;
  41. }
  42. ultimo = NULL;
  43. } //~Lista()
  44.  
  45. int dameNumElementos()
  46. {
  47. return numElementos;
  48. } //dameNumElementos
  49.  
  50. tipo dameElemento(int posicion)
  51. {
  52. Nodo<tipo>* pAuxiliar;
  53. pAuxiliar = primero;
  54. for(int i=0;i<posicion;i++)
  55. {
  56. pAuxiliar=pAuxiliar->sig;
  57. }
  58. return pAuxiliar->info;
  59. /*
  60. int contElementos;
  61. contElementos = 0;
  62. while (pAuxiliar != NULL)
  63. {
  64. if (contElementos == posicion)
  65. return pAuxiliar->info;
  66. else
  67. {
  68. pAuxiliar = pAuxiliar->sig;
  69. contElementos++;
  70. }
  71. }
  72. return NULL;*/
  73. } //dameElemento
  74.  
  75. void insertarElemento(tipo nuevaInfo)
  76. {
  77. Nodo<tipo>* pNuevo;
  78. pNuevo = new Nodo<tipo>;
  79. asignaInfo(pNuevo->info,nuevaInfo);
  80. if (numElementos == 0)
  81. {
  82. primero = pNuevo;
  83. ultimo = pNuevo;
  84. }
  85. else
  86. {
  87. ultimo->sig = pNuevo;
  88. ultimo = pNuevo;
  89. }
  90. numElementos++;
  91. } //insertarElemento
  92.  
  93. void eliminarElemento(int posEliminar)
  94. {
  95. Nodo<tipo>* pBorrar = primero;
  96. Nodo<tipo>* pAnterior = NULL;
  97. if (numElementos >= 1)
  98. {
  99. for (int elemRecorridos = 0; elemRecorridos < posEliminar; elemRecorridos++)
  100. {
  101. pAnterior = pBorrar;
  102. pBorrar = pBorrar->sig;
  103. }
  104. if (pAnterior == NULL)
  105. {
  106. primero = pBorrar->sig;
  107. if (primero == NULL) //ves si tiene 1 el.
  108. ultimo = NULL;
  109. } //primer elemento
  110. else
  111. {
  112. pAnterior->sig = pBorrar->sig;
  113. }
  114. if (pBorrar->sig == NULL)
  115. {
  116. ultimo = pAnterior;
  117. } //para saber si es el ultimo elemento
  118. borrarInfo(pBorrar->info);
  119. delete pBorrar;
  120. numElementos--;
  121. }
  122. } //eliminarElemento
  123. }; //class Lista
Add Comment
Please, Sign In to add comment