#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==