fork(1) 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. 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. }
Runtime error #stdin #stdout #stderr 0s 77120KB
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 0 
stderr
*** Error in `./prog': double free or corruption (fasttop): 0x000055d972bfa070 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x70bcb)[0x2b6f94d83bcb]
/lib/x86_64-linux-gnu/libc.so.6(+0x76f96)[0x2b6f94d89f96]
/lib/x86_64-linux-gnu/libc.so.6(+0x7778e)[0x2b6f94d8a78e]
./prog(+0x804)[0x55d9716e2804]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf1)[0x2b6f94d332b1]
./prog(+0x89a)[0x55d9716e289a]
======= Memory map: ========
2b6f945cc000-2b6f945ef000 r-xp 00000000 fd:00 2710543                    /lib/x86_64-linux-gnu/ld-2.24.so
2b6f945ef000-2b6f945f3000 rw-p 00000000 00:00 0 
2b6f945fc000-2b6f945fe000 rw-p 00000000 00:00 0 
2b6f947ef000-2b6f947f0000 r--p 00023000 fd:00 2710543                    /lib/x86_64-linux-gnu/ld-2.24.so
2b6f947f0000-2b6f947f1000 rw-p 00024000 fd:00 2710543                    /lib/x86_64-linux-gnu/ld-2.24.so
2b6f947f1000-2b6f947f2000 rw-p 00000000 00:00 0 
2b6f947f2000-2b6f948f5000 r-xp 00000000 fd:00 2710572                    /lib/x86_64-linux-gnu/libm-2.24.so
2b6f948f5000-2b6f94af4000 ---p 00103000 fd:00 2710572                    /lib/x86_64-linux-gnu/libm-2.24.so
2b6f94af4000-2b6f94af5000 r--p 00102000 fd:00 2710572                    /lib/x86_64-linux-gnu/libm-2.24.so
2b6f94af5000-2b6f94af6000 rw-p 00103000 fd:00 2710572                    /lib/x86_64-linux-gnu/libm-2.24.so
2b6f94af6000-2b6f94b0e000 r-xp 00000000 fd:00 2710529                    /lib/x86_64-linux-gnu/libpthread-2.24.so
2b6f94b0e000-2b6f94d0d000 ---p 00018000 fd:00 2710529                    /lib/x86_64-linux-gnu/libpthread-2.24.so
2b6f94d0d000-2b6f94d0e000 r--p 00017000 fd:00 2710529                    /lib/x86_64-linux-gnu/libpthread-2.24.so
2b6f94d0e000-2b6f94d0f000 rw-p 00018000 fd:00 2710529                    /lib/x86_64-linux-gnu/libpthread-2.24.so
2b6f94d0f000-2b6f94d13000 rw-p 00000000 00:00 0 
2b6f94d13000-2b6f94ea8000 r-xp 00000000 fd:00 2710666                    /lib/x86_64-linux-gnu/libc-2.24.so
2b6f94ea8000-2b6f950a7000 ---p 00195000 fd:00 2710666                    /lib/x86_64-linux-gnu/libc-2.24.so
2b6f950a7000-2b6f950ab000 r--p 00194000 fd:00 2710666                    /lib/x86_64-linux-gnu/libc-2.24.so
2b6f950ab000-2b6f950ad000 rw-p 00198000 fd:00 2710666                    /lib/x86_64-linux-gnu/libc-2.24.so
2b6f950ad000-2b6f950b1000 rw-p 00000000 00:00 0 
2b6f950b1000-2b6f950c7000 r-xp 00000000 fd:00 2710510                    /lib/x86_64-linux-gnu/libgcc_s.so.1
2b6f950c7000-2b6f952c6000 ---p 00016000 fd:00 2710510                    /lib/x86_64-linux-gnu/libgcc_s.so.1
2b6f952c6000-2b6f952c7000 r--p 00015000 fd:00 2710510                    /lib/x86_64-linux-gnu/libgcc_s.so.1
2b6f952c7000-2b6f952c8000 rw-p 00016000 fd:00 2710510                    /lib/x86_64-linux-gnu/libgcc_s.so.1
2b6f98000000-2b6f98021000 rw-p 00000000 00:00 0 
2b6f98021000-2b6f9c000000 ---p 00000000 00:00 0 
55d9716e2000-55d9716e3000 r-xp 00000000 fd:00 4142330                    /home/2CIRpG/prog
55d9718e2000-55d9718e3000 r--p 00000000 fd:00 4142330                    /home/2CIRpG/prog
55d9718e3000-55d9718e4000 rw-p 00001000 fd:00 4142330                    /home/2CIRpG/prog
55d972bf8000-55d972c1a000 rw-p 00000000 00:00 0                          [heap]
7ffec0ded000-7ffec0e0e000 rw-p 00000000 00:00 0                          [stack]
7ffec0fa0000-7ffec0fa2000 r-xp 00000000 00:00 0                          [vdso]
7ffec0fa2000-7ffec0fa4000 r--p 00000000 00:00 0                          [vvar]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]