fork(1) download
  1. #include <stdio.h>
  2.  
  3. typedef struct pilha {
  4. int m;
  5. int vetor[10];
  6. int topo;
  7. } pilha;
  8.  
  9.  
  10. void esvazia(struct pilha * pilha) {
  11. pilha->topo = 0;
  12. }
  13.  
  14. int push(struct pilha * pilha, int k) {
  15. int m = pilha->m;
  16.  
  17. if (pilha->topo != m-1) {
  18. pilha->topo += 1;
  19. pilha->vetor[pilha->topo] = k;
  20. printf("push: %d\n", k);
  21. } else {
  22. printf("Estouro de pilha! m: %d\n", pilha->topo);
  23. pilha->topo = 0;
  24. }
  25. return pilha->vetor[pilha->topo];
  26. }
  27. /* pop() de pilha vazia dá erro */
  28. int pop(struct pilha * pilha) {
  29. int *k = &pilha->vetor[pilha->topo];
  30.  
  31. if (pilha->topo > 0) {
  32. *k = pilha->vetor[pilha->topo];
  33. pilha->topo -= 1;
  34. } else {
  35. k = NULL;
  36. }
  37. return *k;
  38. }
  39.  
  40. void exibirPilha (struct pilha * pilha){
  41. int i;
  42.  
  43. if (pilha->topo == 0) {
  44. printf("Pilha vazia!\n");
  45. } else {
  46. for (i = pilha->topo; i >=1 ; i--) {
  47. printf("|%.2d|\n", pilha->vetor[i]);
  48. }
  49. }
  50. }
  51.  
  52. int main(void) {
  53.  
  54. pilha pilha_01;
  55. pilha_01.topo = 0;
  56. pilha_01.m = 10;
  57. esvazia(&pilha_01);
  58. //printf("pop: %d\n", pop(&pilha_01));
  59. //pop(&pilha_01);
  60. push(&pilha_01, 13);
  61. push(&pilha_01, 7);
  62. push(&pilha_01, 2);
  63. push(&pilha_01, 9);
  64. esvazia(&pilha_01);
  65. push(&pilha_01, 6);
  66. push(&pilha_01, 2);
  67. push(&pilha_01, 4);
  68. push(&pilha_01, 18);
  69. push(&pilha_01, 21);
  70. //push(&pilha_01, 3);
  71. //push(&pilha_01, 100);
  72. //push(&pilha_01, 200);
  73. exibirPilha(&pilha_01);
  74. //printf("%d\n", pop(&pilha_01));
  75. printf("pop: %d\n", pop(&pilha_01));
  76. printf("pop: %d\n", pop(&pilha_01));
  77. printf("pop: %d\n", pop(&pilha_01));
  78. printf("pop: %d\n", pop(&pilha_01));
  79. printf("pop: %d\n", pop(&pilha_01));
  80. exibirPilha(&pilha_01);
  81.  
  82.  
  83. return 0;
  84. }
  85.  
Success #stdin #stdout 0.01s 5272KB
stdin
Standard input is empty
stdout
push: 13
push: 7
push: 2
push: 9
push: 6
push: 2
push: 4
push: 18
push: 21
|21|
|18|
|04|
|02|
|06|
pop: 21
pop: 18
pop: 4
pop: 2
pop: 6
Pilha vazia!