• Source
    1. /*
    2. Implementação de pilha
    3. Autor: Benjamin Grando Moreira
    4. */
    5.  
    6. #include <iostream>
    7. #define tamanho 5
    8. using namespace std;
    9.  
    10. //define a estrutura que será a pilha
    11. //a estrutura armazena a indicação do topo da pilha e um vetor com os itens (valores) da pilha
    12. typedef struct{
    13. int topo = 0;
    14. int item [tamanho] ;
    15. } PILHA;
    16.  
    17. //retorna se a pilha está vazia ou não
    18. bool pilhaVazia(PILHA p){
    19. if(p.topo == 0) {
    20. return true;
    21. } else {
    22. return false;
    23. }
    24. }
    25.  
    26. //retorna se a pilha está cheia ou não
    27. bool pilhaCheia(PILHA p) {
    28. int tam = sizeof(p.item)/sizeof(int); //determina o tamanho do vetor
    29.  
    30. if (p.topo < tam) {
    31. return false;
    32. } else {
    33. return true;
    34. }
    35. }
    36.  
    37. //adiciona valor na pilha
    38. void empilha(PILHA &p, int x){
    39. p.item[p.topo++]=x;
    40. }
    41.  
    42. //remove valor da pilha
    43. int desempilha(PILHA &p){
    44. return (p.item[--p.topo]) ;
    45. }
    46.  
    47. //mostra os valores armazenados na pilha
    48. void mostraPilha(PILHA p) {
    49. cout << "Valores da pilha: ";
    50. for (int i = 0; i < p.topo; i++) {
    51. cout << p.item[i] << " ";
    52. }
    53. cout << "\n";
    54. }
    55.  
    56.  
    57. //Código para testar a implementação.
    58. int main(){
    59. PILHA s; //criar a pilha
    60.  
    61. //Verificar que a pilha está vazia
    62. if(pilhaVazia(s)) {
    63. cout<<"A pilha está vazia."<<endl;
    64. } else {
    65. cout<<"A pilha não está vazia."<<endl;
    66. }
    67.  
    68. //Empilha valor e verifica se a pilha está vazia
    69. empilha(s,10);
    70. if(pilhaVazia(s)) {
    71. cout<<"A pilha está vazia."<<endl;
    72. } else {
    73. cout<<"A pilha não está vazia."<<endl;
    74. }
    75.  
    76. //Empilhar 3 elementos
    77. empilha(s,20);
    78. empilha(s,30);
    79. empilha(s,40);
    80.  
    81. //Mostra os valores da pilha
    82. mostraPilha(s);
    83.  
    84. //Verifica que a pilha está cheia
    85. if(pilhaCheia(s)) {
    86. cout<<"A pilha está cheia."<<endl;
    87. } else {
    88. cout<<"A pilha não está cheia."<<endl;
    89. }
    90.  
    91. //Empilha valor e verifica se a pilha está cheia
    92. empilha(s,50);
    93. mostraPilha(s);
    94. if(pilhaCheia(s)) {
    95. cout<<"A pilha está cheia."<<endl;
    96. } else {
    97. cout<<"A pilha não está cheia."<<endl;
    98. }
    99.  
    100. //Desempilha e mostrar o valor desempilhado
    101. cout<<"Valor desempilhado: "<< desempilha(s) <<endl;
    102.  
    103. mostraPilha(s);
    104.  
    105. return 0;
    106. }