#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
); Pilha = 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+aW5mbyk7CiAgICBQaWxoYSA9IFBvcChQaWxoYSk7CiAgICAgfQogICAgCiAgICByZXR1cm4gMDsKfQogCkVsZW1lbnRvKiBjcmlhck5vdm8oaW50IENhcmFjdGVyZSkgewogICAgRWxlbWVudG8gKm5vdm87CiAKICAgIG5vdm8gPSAoRWxlbWVudG8qKSBtYWxsb2Moc2l6ZW9mKEVsZW1lbnRvKSk7CiAgICBub3ZvLT5pbmZvID0gQ2FyYWN0ZXJlOwogICAgbm92by0+cHJveCA9IE5VTEw7CiAKICAgIHJldHVybiBub3ZvOwp9CiAKRWxlbWVudG8qIFB1c2goRWxlbWVudG8gKlRvcG8sIGludCBDYXJhY3RlcmUpIHsKICAgIEVsZW1lbnRvICpub3ZvOwogCiAgICBub3ZvID0gY3JpYXJOb3ZvKENhcmFjdGVyZSk7CiAKICAgIG5vdm8tPnByb3ggPSBUb3BvOwogICAgVG9wbyA9IG5vdm87CiAgICByZXR1cm4gVG9wbzsKfQogCkVsZW1lbnRvKiBQb3AoRWxlbWVudG8gKlRvcG8pIHsKICAgIEVsZW1lbnRvICphdXg7CiAKICAgIGF1eCA9IFRvcG87CiAgICBpZihUb3BvICE9IE5VTEwpIHsKICAgICAgICBUb3BvID0gVG9wby0+cHJveDsKICAgICAgICBmcmVlKGF1eCk7CiAgICB9CiAgICByZXR1cm4gVG9wbzsKfQogCkVsZW1lbnRvKiBUb3AoRWxlbWVudG8gKlRvcG8pIHsKICAgIHJldHVybiBUb3BvOwp9