#include <stdio.h>
typedef struct pilha {
int m;
int vetor[10];
int topo;
} pilha;
void esvazia(struct pilha * pilha) {
pilha->topo = 0;
}
int push(struct pilha * pilha, int k) {
int m = pilha->m;
if (pilha->topo != m-1) {
pilha->topo += 1;
pilha->vetor[pilha->topo] = k;
} else {
printf("Estouro de pilha! m: %d\n", pilha
->topo
); pilha->topo = 0;
}
return pilha->vetor[pilha->topo];
}
/* pop() de pilha vazia dá erro */
int pop(struct pilha * pilha) {
int *k = &pilha->vetor[pilha->topo];
if (pilha->topo > 0) {
*k = pilha->vetor[pilha->topo];
pilha->topo -= 1;
} else {
k = NULL;
}
return *k;
}
void exibirPilha (struct pilha * pilha){
int i;
if (pilha->topo == 0) {
} else {
for (i = pilha->topo; i >=1 ; i--) {
printf("|%.2d|\n", pilha
->vetor
[i
]); }
}
}
int main(void) {
pilha pilha_01;
pilha_01.topo = 0;
pilha_01.m = 10;
esvazia(&pilha_01);
//printf("pop: %d\n", pop(&pilha_01));
//pop(&pilha_01);
push(&pilha_01, 13);
push(&pilha_01, 7);
push(&pilha_01, 2);
push(&pilha_01, 9);
esvazia(&pilha_01);
push(&pilha_01, 6);
push(&pilha_01, 2);
push(&pilha_01, 4);
push(&pilha_01, 18);
push(&pilha_01, 21);
//push(&pilha_01, 3);
//push(&pilha_01, 100);
//push(&pilha_01, 200);
exibirPilha(&pilha_01);
//printf("%d\n", pop(&pilha_01));
printf("pop: %d\n", pop
(&pilha_01
)); printf("pop: %d\n", pop
(&pilha_01
)); printf("pop: %d\n", pop
(&pilha_01
)); printf("pop: %d\n", pop
(&pilha_01
)); printf("pop: %d\n", pop
(&pilha_01
)); exibirPilha(&pilha_01);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp0eXBlZGVmIHN0cnVjdCBwaWxoYSB7CglpbnQgbTsKCWludCB2ZXRvclsxMF07CglpbnQgdG9wbzsKfSBwaWxoYTsKCgp2b2lkIGVzdmF6aWEoc3RydWN0IHBpbGhhICogcGlsaGEpIHsKCXBpbGhhLT50b3BvID0gMDsKfQoKaW50IHB1c2goc3RydWN0IHBpbGhhICogcGlsaGEsIGludCBrKSB7CglpbnQgbSA9IHBpbGhhLT5tOwoJCglpZiAocGlsaGEtPnRvcG8gIT0gbS0xKSB7CgkJcGlsaGEtPnRvcG8gKz0gMTsKCQlwaWxoYS0+dmV0b3JbcGlsaGEtPnRvcG9dID0gazsKCQlwcmludGYoInB1c2g6ICVkXG4iLCBrKTsKCX0gZWxzZSB7CgkJcHJpbnRmKCJFc3RvdXJvIGRlIHBpbGhhISBtOiAlZFxuIiwgcGlsaGEtPnRvcG8pOwoJCXBpbGhhLT50b3BvID0gMDsKCX0KCXJldHVybiBwaWxoYS0+dmV0b3JbcGlsaGEtPnRvcG9dOwp9CQovKiBwb3AoKSBkZSBwaWxoYSB2YXppYSBkw6EgZXJybyAqLwppbnQgcG9wKHN0cnVjdCBwaWxoYSAqIHBpbGhhKSB7CglpbnQgKmsgPSAmcGlsaGEtPnZldG9yW3BpbGhhLT50b3BvXTsgCgoJaWYgKHBpbGhhLT50b3BvID4gMCkgewoJCSprID0gcGlsaGEtPnZldG9yW3BpbGhhLT50b3BvXTsKCQlwaWxoYS0+dG9wbyAtPSAxOwoJfSBlbHNlIHsKCQlrID0gTlVMTDsKCX0gCglyZXR1cm4gKms7Cn0KCnZvaWQgZXhpYmlyUGlsaGEgKHN0cnVjdCBwaWxoYSAqIHBpbGhhKXsKCWludCBpOwoJCglpZiAocGlsaGEtPnRvcG8gPT0gMCkgewoJCXByaW50ZigiUGlsaGEgdmF6aWEhXG4iKTsKCX0gZWxzZSB7CgkJZm9yIChpID0gcGlsaGEtPnRvcG87IGkgPj0xIDsgaS0tKSB7CgkJCXByaW50ZigifCUuMmR8XG4iLCBwaWxoYS0+dmV0b3JbaV0pOwoJCX0KCX0KfSAKCmludCBtYWluKHZvaWQpIHsKCQoJcGlsaGEgcGlsaGFfMDE7CglwaWxoYV8wMS50b3BvID0gMDsKCXBpbGhhXzAxLm0gPSAxMDsKCWVzdmF6aWEoJnBpbGhhXzAxKTsKCS8vcHJpbnRmKCJwb3A6ICVkXG4iLCBwb3AoJnBpbGhhXzAxKSk7CgkvL3BvcCgmcGlsaGFfMDEpOwoJcHVzaCgmcGlsaGFfMDEsIDEzKTsKCXB1c2goJnBpbGhhXzAxLCA3KTsKCXB1c2goJnBpbGhhXzAxLCAyKTsKCXB1c2goJnBpbGhhXzAxLCA5KTsKCWVzdmF6aWEoJnBpbGhhXzAxKTsKCXB1c2goJnBpbGhhXzAxLCA2KTsKCXB1c2goJnBpbGhhXzAxLCAyKTsKCXB1c2goJnBpbGhhXzAxLCA0KTsKCXB1c2goJnBpbGhhXzAxLCAxOCk7CglwdXNoKCZwaWxoYV8wMSwgMjEpOwoJLy9wdXNoKCZwaWxoYV8wMSwgMyk7CgkvL3B1c2goJnBpbGhhXzAxLCAxMDApOwoJLy9wdXNoKCZwaWxoYV8wMSwgMjAwKTsKCWV4aWJpclBpbGhhKCZwaWxoYV8wMSk7CgkvL3ByaW50ZigiJWRcbiIsIHBvcCgmcGlsaGFfMDEpKTsKCXByaW50ZigicG9wOiAlZFxuIiwgcG9wKCZwaWxoYV8wMSkpOwoJcHJpbnRmKCJwb3A6ICVkXG4iLCBwb3AoJnBpbGhhXzAxKSk7CglwcmludGYoInBvcDogJWRcbiIsIHBvcCgmcGlsaGFfMDEpKTsKCXByaW50ZigicG9wOiAlZFxuIiwgcG9wKCZwaWxoYV8wMSkpOwoJcHJpbnRmKCJwb3A6ICVkXG4iLCBwb3AoJnBpbGhhXzAxKSk7CglleGliaXJQaWxoYSgmcGlsaGFfMDEpOwoKCQoJcmV0dXJuIDA7Cn0K