fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. typedef struct noLista {
  5. int info;
  6. struct noLista *prox;
  7. } Elemento;
  8.  
  9. Elemento* criarNovo(int Caractere);
  10. Elemento* Push(Elemento *Topo, int Caractere);
  11. Elemento* Pop(Elemento *Topo);
  12. Elemento* Top(Elemento *Topo);
  13.  
  14. int main () {
  15. int Dados, i, op;
  16. Elemento *Pilha = NULL, *aux, *Pilha2 = NULL;
  17.  
  18. do {
  19. printf("1 - Adicionar elemento\n");
  20. printf("2 - Remover elemento\n");
  21. printf("0 - Encerrar\n\n");
  22.  
  23. printf("Opcao: ");
  24. scanf("%d", &op);
  25.  
  26. switch(op) {
  27. case 1:
  28. printf("Digite um inteiro: ");
  29. scanf("%d", &Dados);
  30.  
  31. Pilha = Push(Pilha, Dados);
  32. printf("Elemento adicionado\n\n");
  33. break;
  34.  
  35. case 2:
  36. if (Top(Pilha2) == NULL){
  37. while (Top(Pilha) != NULL){
  38. int removido = Top(Pilha)->info;
  39. Pilha = Pop(Pilha);
  40. Pilha2 = Push(Pilha2, removido);
  41. }
  42. }
  43.  
  44. if(Top(Pilha2) != NULL) {
  45. int removido = Top(Pilha2)->info;
  46. Pilha2 = Pop(Pilha2);
  47. printf("Elemento %d removido\n\n", removido);
  48. } else {
  49. printf("A pilha esta vazia\n\n");
  50. }
  51. break;
  52.  
  53. case 3:
  54.  
  55. break;
  56.  
  57. }
  58. } while(op!=0);
  59. while(Pilha)
  60. {
  61. printf("%d ", Top(Pilha)->info);
  62. Pilha = Pop(Pilha);
  63. }
  64.  
  65. return 0;
  66. }
  67.  
  68. Elemento* criarNovo(int Caractere) {
  69. Elemento *novo;
  70.  
  71. novo = (Elemento*) malloc(sizeof(Elemento));
  72. novo->info = Caractere;
  73. novo->prox = NULL;
  74.  
  75. return novo;
  76. }
  77.  
  78. Elemento* Push(Elemento *Topo, int Caractere) {
  79. Elemento *novo;
  80.  
  81. novo = criarNovo(Caractere);
  82.  
  83. novo->prox = Topo;
  84. Topo = novo;
  85. return Topo;
  86. }
  87.  
  88. Elemento* Pop(Elemento *Topo) {
  89. Elemento *aux;
  90.  
  91. aux = Topo;
  92. if(Topo != NULL) {
  93. Topo = Topo->prox;
  94. free(aux);
  95. }
  96. return Topo;
  97. }
  98.  
  99. Elemento* Top(Elemento *Topo) {
  100. return Topo;
  101. }
Success #stdin #stdout 0s 9424KB
stdin
1
5
1
6
1
7
0
stdout
1 - Adicionar elemento
2 - Remover elemento
0 - Encerrar

Opcao: Digite um inteiro: Elemento adicionado

1 - Adicionar elemento
2 - Remover elemento
0 - Encerrar

Opcao: Digite um inteiro: Elemento adicionado

1 - Adicionar elemento
2 - Remover elemento
0 - Encerrar

Opcao: Digite um inteiro: Elemento adicionado

1 - Adicionar elemento
2 - Remover elemento
0 - Encerrar

Opcao: 7 6 5