fork(1) download
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. using namespace std;
  7.  
  8. template <class T>
  9. class elemento
  10. {
  11. public:
  12. T dado;
  13. elemento<T> *prox;
  14. };
  15.  
  16. template <class T>
  17. class pilha
  18. {
  19. private:
  20. elemento<T> *top;
  21. public:
  22. pilha() { top = NULL; }
  23. bool empilha(T);
  24. T topo();
  25. T pop();
  26. bool vazio();
  27. ~pilha();
  28.  
  29. };
  30.  
  31. template <class T>
  32. pilha<T>::~pilha()
  33. {
  34. delete [] top;
  35. }
  36.  
  37. template <class T>
  38. bool pilha<T>::empilha(T x)
  39. {
  40. if (top==NULL)
  41. {
  42. top = new elemento<T>;
  43. top->dado = x;
  44. top->prox = NULL;
  45. return true;
  46. }
  47. else
  48. {
  49. elemento<T> *aux = new elemento<T>;
  50. aux->dado = x;
  51. aux->prox = top;
  52. top = aux;
  53. return true;
  54. }
  55. return false;
  56. }
  57.  
  58. template <class T>
  59. T pilha<T>::topo()
  60. {
  61. if (!vazio())
  62. {
  63. return top->dado;
  64. }
  65. return -1; //RETORNA -1 QUANDO A PILHA ESTA VAZIA
  66. }
  67.  
  68. template <class T>
  69. T pilha<T>::pop()
  70. {
  71. if (vazio())
  72. {
  73. return -1; //RETORNA -1 QUANDO A PILHA ESTA VAZIA
  74. }
  75. else
  76. {
  77. T aux = top->dado;
  78. top = top->prox;
  79. return aux;
  80. }
  81. }
  82.  
  83. template <class T>
  84. bool pilha<T>::vazio()
  85. {
  86. return (top==NULL);
  87. }
  88.  
  89. using namespace std;
  90.  
  91. int main()
  92. {
  93. pilha<int> p;
  94. if (!p.vazio())
  95. {
  96. cout<<p.topo()<< endl;
  97. }
  98. p.empilha(1);
  99. cout<<p.pop()<< endl;
  100. p.empilha(2);
  101. cout<<p.pop()<< endl;
  102. p.empilha(3);
  103. cout<<p.pop()<< endl;
  104. p.empilha(4);
  105. cout<<p.pop()<< endl;
  106. p.empilha(5);
  107. cout<<p.pop()<< endl;
  108. p.empilha(6);
  109. p.empilha(7);
  110. p.empilha(8);
  111. cout<<p.pop()<< endl;
  112. p.empilha(9);
  113. p.empilha(10);
  114. p.empilha(11);
  115. p.empilha(12);
  116. p.empilha(13);
  117. cout<<p.pop()<< endl;
  118. p.empilha(14);
  119.  
  120. cout<<p.topo()<< endl;
  121.  
  122. cout<<p.pop()<< endl;
  123. cout<<p.pop()<< endl;
  124. cout<<p.pop()<< endl;
  125. cout<<p.pop()<< endl;
  126. cout<<p.pop()<< endl;
  127. cout<<p.pop()<< endl;
  128. cout<<p.pop()<< endl;
  129. cout<<p.pop()<< endl;
  130. return 0;
  131. }
Success #stdin #stdout 0s 3228KB
stdin
Standard input is empty
stdout
1
2
3
4
5
8
13
14
14
12
11
10
9
7
6
-1