#include<stdio.h>
#include<stdlib.h>
typedef struct noLista {
int info;
struct noLista *prox;
} Elemento;
Elemento* criarNovo(int Caractere);
Elemento* Push(Elemento *Topo, int Caractere);
Elemento* Pop(Elemento *Topo);
Elemento* Top(Elemento *Topo);
int main () {
int Dados, i, op;
Elemento *Pilha = NULL, *aux, *Pilha2 = NULL;
do {
printf("1 - Adicionar elemento\n"); printf("2 - Remover elemento\n");
switch(op) {
case 1:
printf("Digite um inteiro: ");
Pilha = Push(Pilha, Dados);
printf("Elemento adicionado\n\n"); break;
case 2:
if (Top(Pilha2) == NULL){
while (Top(Pilha) != NULL){
int removido = Top(Pilha)->info;
Pilha = Pop(Pilha);
Pilha2 = Push(Pilha2, removido);
}
}
if(Top(Pilha2) != NULL) {
int removido = Top(Pilha2)->info;
Pilha2 = Pop(Pilha2);
printf("Elemento %d removido\n\n", removido
); } else {
printf("A pilha esta vazia\n\n"); }
break;
case 3:
break;
}
} while(op!=0);
while(Pilha)
{
printf("%d ", Top
(Pilha
)->info
); Pop(Pilha);
}
return 0;
}
Elemento* criarNovo(int Caractere) {
Elemento *novo;
novo
= (Elemento
*) malloc(sizeof(Elemento
)); novo->info = Caractere;
novo->prox = NULL;
return novo;
}
Elemento* Push(Elemento *Topo, int Caractere) {
Elemento *novo;
novo = criarNovo(Caractere);
novo->prox = Topo;
Topo = novo;
return Topo;
}
Elemento* Pop(Elemento *Topo) {
Elemento *aux;
aux = Topo;
if(Topo != NULL) {
Topo = Topo->prox;
}
return Topo;
}
Elemento* Top(Elemento *Topo) {
return Topo;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CiAKdHlwZWRlZiBzdHJ1Y3Qgbm9MaXN0YSB7CiAgICBpbnQgaW5mbzsKICAgIHN0cnVjdCBub0xpc3RhICpwcm94Owp9IEVsZW1lbnRvOwogCkVsZW1lbnRvKiBjcmlhck5vdm8oaW50IENhcmFjdGVyZSk7CkVsZW1lbnRvKiBQdXNoKEVsZW1lbnRvICpUb3BvLCBpbnQgQ2FyYWN0ZXJlKTsKRWxlbWVudG8qIFBvcChFbGVtZW50byAqVG9wbyk7CkVsZW1lbnRvKiBUb3AoRWxlbWVudG8gKlRvcG8pOwogCmludCBtYWluICgpIHsKICAgIGludCBEYWRvcywgaSwgb3A7CiAgICBFbGVtZW50byAqUGlsaGEgPSBOVUxMLCAqYXV4LCAqUGlsaGEyID0gTlVMTDsKIAogICAgZG8gewogICAgICAgIHByaW50ZigiMSAtIEFkaWNpb25hciBlbGVtZW50b1xuIik7CiAgICAgICAgcHJpbnRmKCIyIC0gUmVtb3ZlciBlbGVtZW50b1xuIik7CiAgICAgICAgcHJpbnRmKCIwIC0gRW5jZXJyYXJcblxuIik7CiAKICAgICAgICBwcmludGYoIk9wY2FvOiAiKTsKICAgICAgICBzY2FuZigiJWQiLCAmb3ApOwogCiAgICAgICAgc3dpdGNoKG9wKSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgICBwcmludGYoIkRpZ2l0ZSB1bSBpbnRlaXJvOiAiKTsKICAgICAgICAgICAgc2NhbmYoIiVkIiwgJkRhZG9zKTsKIAogICAgICAgICAgICBQaWxoYSA9IFB1c2goUGlsaGEsIERhZG9zKTsKICAgICAgICAgICAgcHJpbnRmKCJFbGVtZW50byBhZGljaW9uYWRvXG5cbiIpOwogICAgICAgICAgICBicmVhazsKIAogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgaWYgKFRvcChQaWxoYTIpID09IE5VTEwpewogICAgICAgICAgICAgICAgd2hpbGUgKFRvcChQaWxoYSkgIT0gTlVMTCl7CiAgICAgICAgICAgICAgICAgICAgaW50IHJlbW92aWRvID0gVG9wKFBpbGhhKS0+aW5mbzsKICAgICAgICAgICAgICAgICAgICBQaWxoYSA9IFBvcChQaWxoYSk7CiAgICAgICAgICAgICAgICAgICAgUGlsaGEyID0gUHVzaChQaWxoYTIsIHJlbW92aWRvKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogCiAgICAgICAgICAgIGlmKFRvcChQaWxoYTIpICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgIGludCByZW1vdmlkbyA9IFRvcChQaWxoYTIpLT5pbmZvOwogICAgICAgICAgICAgICAgUGlsaGEyID0gUG9wKFBpbGhhMik7CiAgICAgICAgICAgICAgICBwcmludGYoIkVsZW1lbnRvICVkIHJlbW92aWRvXG5cbiIsIHJlbW92aWRvKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHByaW50ZigiQSBwaWxoYSBlc3RhIHZhemlhXG5cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgY2FzZSAzOgogCiAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgfQogICAgfSB3aGlsZShvcCE9MCk7CiAgICAgd2hpbGUoUGlsaGEpCiAgICAgewogICAgIHByaW50ZigiJWQgIiwgVG9wKFBpbGhhKS0+aW5mbyk7CiAgICBQb3AoUGlsaGEpOwogICAgIH0KICAgIAogICAgcmV0dXJuIDA7Cn0KIApFbGVtZW50byogY3JpYXJOb3ZvKGludCBDYXJhY3RlcmUpIHsKICAgIEVsZW1lbnRvICpub3ZvOwogCiAgICBub3ZvID0gKEVsZW1lbnRvKikgbWFsbG9jKHNpemVvZihFbGVtZW50bykpOwogICAgbm92by0+aW5mbyA9IENhcmFjdGVyZTsKICAgIG5vdm8tPnByb3ggPSBOVUxMOwogCiAgICByZXR1cm4gbm92bzsKfQogCkVsZW1lbnRvKiBQdXNoKEVsZW1lbnRvICpUb3BvLCBpbnQgQ2FyYWN0ZXJlKSB7CiAgICBFbGVtZW50byAqbm92bzsKIAogICAgbm92byA9IGNyaWFyTm92byhDYXJhY3RlcmUpOwogCiAgICBub3ZvLT5wcm94ID0gVG9wbzsKICAgIFRvcG8gPSBub3ZvOwogICAgcmV0dXJuIFRvcG87Cn0KIApFbGVtZW50byogUG9wKEVsZW1lbnRvICpUb3BvKSB7CiAgICBFbGVtZW50byAqYXV4OwogCiAgICBhdXggPSBUb3BvOwogICAgaWYoVG9wbyAhPSBOVUxMKSB7CiAgICAgICAgVG9wbyA9IFRvcG8tPnByb3g7CiAgICAgICAgZnJlZShhdXgpOwogICAgfQogICAgcmV0dXJuIFRvcG87Cn0KIApFbGVtZW50byogVG9wKEVsZW1lbnRvICpUb3BvKSB7CiAgICByZXR1cm4gVG9wbzsKfQ==
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
*** 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]