Se desea guardar un aproximado de 100 números enteros en una

Transcripción

Se desea guardar un aproximado de 100 números enteros en una
EJERCICIO DE PILA (PROCESAMIENTO DE DATOS)
Se desea guardar un aproximado de 100 números enteros en una estructura tipo pila,
la cual permita añadir elementos, sacar los elementos e imprimir los datos contenidos
en la pila.
/*Pila en forma de arreglo*/
#include <stdio.h>
#include <conio.h>
/*declaracion de la pila*/
typedef struct{
int datos[100];
int top;
}Pila;
/*declaracion de las funciones*/
void push(Pila *ps, int x); /*Introduce un elemento a la pila*/
int top (Pila *ps); /*elimina y muestra un elemento de la pila*/
int empty (Pila *ps);
int pop(Pila *ps);
/*Programa Pincipal*/
main()
{
Pila pila; /*definicion de la variable pila*/
int x, opc=5, i, k=0;
pila.top=-1;
while(opc!=4)
{
printf("\t\t\t MENU PRINCIPAL\n\n\n");
printf("\t1. Introducir datos\n");
printf("\t2. Sacar datos\n");
printf("\t3.Imprimir la pila\n");
printf("\t4.Salir\n");
scanf("%d", &opc);
switch(opc)
{
case 1: if(pila.top==99)
printf("ERROR, pila llena\a\n");
else
{
printf("Ingrese el dato\n");
scanf("%d", &x);
push(&pila, x);
k++;
}
break;
case 2: printf("El elemento sacado es %d\n\n", pop(&pila));
k--;
getch();
break;
case 3: if(pila.top>=0)
{
printf("Los elementos de la pila son:\n");
for(i=0; i<k; i++)
printf("%d->", pila.datos[i]);
getch();
}
else
printf("No hay datos en la pila\a\n");
break;
}
}
printf("Fin del programa\n\n");
getch();
return 0;
}
/*funcion que agrega un dato a la pila*/
void push (Pila *ps, int x)
{
ps->datos[++(ps->top)]=x;
}
/*funcion que elimina y devuelve un elemento de la pila*/
int pop(Pila *ps)
{
int r=NULL;
if(empty(ps)==1)
printf("No hay elementos para sacar\a\n");
else
r=ps->datos[(ps->top)--];
return r;
}
/*funcion que verifica si la pila esta vacia*/
int empty (Pila *ps)
{
int r;
if(ps->top==-1)
r=1;
else
r=0;
return r;
}

Documentos relacionados