SEGUNDO PARCIAL

lunes, 3 de octubre de 2011

PILA VACIA

#include <stdio.h>
#include <stdlib.h>


/*declaracion de una estructura de datos pila*/
struct tpila{
  int clave;
  struct tpila *sig;
};

/*crea la pila para que se le den valores*/
void crear(struct tpila **pila);
int vacia(struct tpila *pila);
void apilar(struct tpila *pila, int elem);void desapilar(struct tpila *pila, int *elem);


void crear(struct tpila **pila)
{  *pila = (struct tpila *) malloc(sizeof(struct tpila)); /*indica el tamaño de la pila */
  (*pila)->sig = NULL;
}

/*da valores vacios  a cada uno de los espacios en la pila
esto solo gasta memoria ram sin ningun dato */

int vacia(struct tpila *pila){
  return (pila->sig == NULL);
}

void apilar(struct tpila *pila, int elem){
  struct tpila *nuevo;

  nuevo = (struct tpila *) malloc(sizeof(struct tpila));/*indica el tamaño de la fila*/
  nuevo->clave = elem;  nuevo->sig = pila->sig;
  pila->sig = nuevo;
}

void desapilar(struct tpila *pila, int *elem){
  struct tpila *aux;

  aux = pila->sig;
  *elem = aux->clave;  pila->sig = aux->sig;
  free(aux);
}

/*este es solo el codigo que checara la pila y nos dira que la pila
esta vacia*/

int main(void)
{
  struct tpila *pila;
  int elem;
  crear(&pila);
  if (vacia(pila)) printf("nPila vacia!");
  apilar(pila, 1);
  desapilar(pila, &elem);
  return 0;

No hay comentarios:

Publicar un comentario