Código fuente
#include < stdlib . h >
#include < stdio . h >
#include < conio . h >
#include < windows . h >
struct pilanodo
{
int dato;
struct pilanodo *sig;
};
typedef struct pilanodo PILA;
typedef PILA *PILAPTR;
void menu(void);
void push (PILAPTR * aux, int valor)
{
PILAPTR aux1;
aux1 = (PILAPTR)malloc(sizeof(PILA));
if (aux != NULL)
{
{
aux1->dato= valor;
aux1->sig = NULL;
if (*aux == NULL)
*aux = aux1;
else
{
aux1->sig = *aux;
*aux = aux1;
}
}
else printf ("\n\n No hubo espacio suficiente en la memoria");
else printf ("\n\n No hubo espacio suficiente en la memoria");
}
void imprimepila (PILAPTR);
int pop (PILAPTR *);
int estavacia(PILAPTR);
int estavacia(PILAPTR aux)
{
return aux == NULL;
}
int pop(PILAPTR *aux)
{
PILAPTR aux1;
int salevalor;
aux1 = *aux;
*aux = aux1-> sig;
// Tambien le puedo asignar *aux = *aux->sig es una segunda forma
salevalor = aux1->dato;
free(aux1);
return (salevalor);
}
void imprimepila (PILAPTR aux)
{
do {
printf("%d", aux->dato);
printf ("\n");
aux= aux->sig;
}
while ( aux != NULL);
}
main ()
{
PILAPTR pilaptr= NULL;
int opcion, valor;
do{
menu();
printf("\n\n ELIGE UNA OPCION...\n");
scanf("%d",&opcion);
//while (opcion !=2)
//{
switch (opcion)
{
case 1: printf("\n\n DAME EL VALOR DEL NODO : \n");
scanf("%d",&valor);
//le llamaremos push a la funcion agregar.
push(&pilaptr, valor);
break;
case 2: if(!estavacia(pilaptr))
printf("\n\n EL VALOR EXTRAIDO DE LA PILA ES: %d", pop(&pilaptr));
getch ();
break;
case 3: printf("\n\n Los valores de al pila son:\n");
imprimepila (pilaptr);
getch ();
break;
case 4: printf("\n\n Presione enter para salir de la ejecucion \n");
}
}
while (opcion !=4);
}
void menu(void)
{
system("cls");
printf("\n\n OPERACIONES DISPONIBLES CON LA PILA \n\n Elija una opcion:");
printf("\n\n 1 Agregar un nodo a la pila\n");
printf("\n\n 2 Eliminar nodos en la pila\n");
printf("\n\n 3 Mostrar la pila \n");
printf("\n\n 4 Finalizar \n");
}
Pantallas ejecutando el programa
Menu
Primera opción
Segunda opción
Tercera opción
No hay comentarios:
Publicar un comentario