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. return 0;
  60. }
  61.  
  62. Elemento* criarNovo(int Caractere) {
  63. Elemento *novo;
  64.  
  65. novo = (Elemento*) malloc(sizeof(Elemento));
  66. novo->info = Caractere;
  67. novo->prox = NULL;
  68.  
  69. return novo;
  70. }
  71.  
  72. Elemento* Push(Elemento *Topo, int Caractere) {
  73. Elemento *novo;
  74.  
  75. novo = criarNovo(Caractere);
  76.  
  77. novo->prox = Topo;
  78. Topo = novo;
  79. return Topo;
  80. }
  81.  
  82. Elemento* Pop(Elemento *Topo) {
  83. Elemento *aux;
  84.  
  85. aux = Topo;
  86. if(Topo != NULL) {
  87. Topo = Topo->prox;
  88. free(aux);
  89. }
  90. return Topo;
  91. }
  92.  
  93. Elemento* Top(Elemento *Topo) {
  94. return Topo;
  95. }
  96.  
Success #stdin #stdout 0s 9424KB
stdin
1
5
1
10
1
12
2
2
2
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: Elemento 5 removido

1 - Adicionar elemento
2 - Remover elemento
0 - Encerrar

Opcao: Elemento 10 removido

1 - Adicionar elemento
2 - Remover elemento
0 - Encerrar

Opcao: Elemento 12 removido

1 - Adicionar elemento
2 - Remover elemento
0 - Encerrar

Opcao: