/* =============================================================================================
Wilfredo Cruz Yarlequé wcruzy@gmail.com
Piura, Perú, Octubre 04 de 2019
Programa para manejo de Pilas en base a un arreglo
============================================================================================= */
#include <stdio.h>
#include <stdlib.h>
void menu(void);
void estadoPila(int, char *);
void main()
{
char x[100]; // arreglo de cien caracteres
int top=0; // puntero al tope de la pila
int opcion; // opción del menu
char valor; // valor a ser ingresado a la pila
char sale; // valor que se obtiene de la pila
menu(); // lista las opciones del menú
printf("Opcion: ");
scanf("%d", &opcion);
while (opcion != 3)
{
switch(opcion)
{
case 1 : // Insertar un valor en la pila
if (top < 100)
{
printf("Valor a ingresar en la pila: ");
scanf("\n%c", &valor);
x[top+1]=valor;
top++;
estadoPila(top, x);
}
else
printf("\nPila completamente llena...\n");
break;
case 2 : // Retirar elemento superior de la pila
if (top >=1)
{
sale=x[top];
printf("\nElemento retirado de la pila: %c\n", sale);
top--;
estadoPila(top, x);
}
else
printf("\nPila vacía...\n");
break;
default :
printf("\nOpción no valida...\n");
break;
}
printf("Opción: ");
scanf("%d", &opcion);
}
printf("\nFin del programa...\n");
return;
}
// Despliega las opciones del menu
void menu(void)
{
printf("Ingrese una de las siguientes opciones:\n"
"1 : Insertar un valor a la pila\n"
"2 : Retirar el valor en la parte superior de la pila\n"
"3 : Salir del programa\n"
"\n");
return;
}
// Muestra el estado de la pila
void estadoPila(int top, char *x)
{
int i;
for (i=1; i<=top; i++)
printf("%c ", x[i]);
printf("\n");
}