#include <stdio.h>
#include <stdlib.h>
struct Pilha{
int topo;/*pociçaõ do elemento topo*/
int capa;
float *pElem;
};
void criarpilha(struct Pilha *p, int c ){
p->topo = -1;
p->capa = c;
p->pElem =(float*) malloc (c * sizeof(float));
}
int estavazia( struct Pilha *p){
if(p-> topo == -1)
return 1; // true
else
return 0; // false
}
int estacheia(struct Pilha *p){
if(p->topo == p->capa -1)
return 1;// true
else
return 0;// false
}
void empilhar(struct Pilha *p, float v){
p->topo++;
p->pElem[p->topo] = v;
}
float desempilhar (struct Pilha *p){
float aux = p->pElem [p->topo];
p->topo--;
return aux;
}
float retornatopo(struct Pilha *p){
return p->pElem[p->topo];
}
int main(){
struct Pilha minhapilha;
int capacidade, op;
float valor;
printf("\nCapacidade da Pilha?\n ");
scanf("%d", &capacidade);
criarpilha(&minhapilha, capacidade);
while(1){ /* Loop Infinito*/
printf(" \n1- Empilhar (PUSH)\n");
printf(" \n2- Desempilhar (POP)\n");
printf(" \n3- Mostar qual elemento do Topo \n");
printf(" \n4- Sair\n");
printf(" \nOpcao ? ");
scanf("%d", &op);
switch (op){
case 1: //PUSH
if(estacheia(&minhapilha)== 1)
printf("\nPilha Cheia! \n");
else{
printf(" \n Valor ?");
scanf("%f", &valor);
empilhar(&minhapilha, valor);
}
break;
case 2: // POP
if(estavazia(&minhapilha)== 1)
printf("\nPilha Vazia!!!\n");
else{
valor = desempilhar(&minhapilha);
printf("\n%.1f Desempilhado !\n", valor);
}
break;
case 3: // Mostrar o Topo
if(estavazia(&minhapilha)== 1)
printf("\n Pilha Vazia !\n");
else{
valor = retornatopo(&minhapilha);
printf("\nTopo: %.1f\n", valor);
}
break;
case 4: // Sair
exit(0);
default: printf("\n Opcao Invalida!!!\n");
}
}
}
Nenhum comentário:
Postar um comentário