#include <stdio.h>
#define T 5
typedef struct{
int topo;
int elementos[T];
}PILHA;
void iniciarPilha(PILHA *p);
int menu();
int overflow(PILHA *p);
int underflow(PILHA *p);
int push(PILHA *P, int *x);
int pop(PILHA *p);
void imprimir(PILHA *p);
int main(){
PILHA pil;
int opc, novo;
iniciarPilha(&pil);
do{
opc = menu();
switch(opc){
case 1:
if(!overflow(&pil)){
printf("informe um novo valor: ");
scanf("%d", &novo);
printf("valor %d inserido!\n", push(&pil, &novo));
}else
printf("Pilha cheia!\n");
getche();
system("cls");
break;
case 2:
if(!underflow(&pil))
imprimir(&pil);
else
printf("pilha vazia!\n");
getch();
system("cls");
break;
case 3:
if(!underflow(&pil))
printf("valor %d removido!\n", pop(&pil));
else
printf("Pilha vazia!\n");
getche();
system("cls");
break;
case 0: break;
default: printf("opcao %d incorreta!\n",opc);
}
}while(opc != 0);
}
void iniciarPilha(PILHA *p){
p->topo = -1;
}
int menu(){
int opc;
printf("1-inserir elemento\n"
"2-Imprimir pilha\n"
"3-remover elemento\n"
"0-sair\n");
scanf("%d", &opc);
return opc;
}
int overflow(PILHA *p){
return p->topo == T -1;
}
int underflow(PILHA *p){
return p->topo == -1;
}
int push(PILHA *p, int *x){
p->topo++;
p->elementos[p->topo] = *x;
return p->elementos[p->topo];
}
int pop(PILHA *p){
int ult;
ult = p->elementos[p->topo];
p->topo--;
return ult;
}
void imprimir(PILHA *p){
int aux;
for(aux = p->topo; aux >= 0; aux--)
printf("elemento[%d] = %d\n", aux+1, p->elementos[aux]);
}
Trabalhos.:
E-mail: mvf5system@gmail.com
Blog: http://mvf5-system.blogspot.com.br/
Facebook: https://www.facebook.com/mvf5systems
0 comentários:
Postar um comentário