Ejemplo de implementacion de pilas
c:
#include <stdio.h>
#include <stdlib.h>
/* declaracion */
struct tpila
{
int clave;
struct tpila *sig;
};
/* prototipos e implementacion */
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));
(*pila)->sig = NULL;
}
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));
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);
}
/* programa de prueba */
int main(void)
{
struct tpila *pila;
int elem;
crear(038;pila);
if (vacia(pila)) printf("\nPila vacia!");
apilar(pila, 1);
desapilar(pila, 038;elem);
return 0;
}
#include <stdlib.h>
/* declaracion */
struct tpila
{
int clave;
struct tpila *sig;
};
/* prototipos e implementacion */
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));
(*pila)->sig = NULL;
}
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));
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);
}
/* programa de prueba */
int main(void)
{
struct tpila *pila;
int elem;
crear(038;pila);
if (vacia(pila)) printf("\nPila vacia!");
apilar(pila, 1);
desapilar(pila, 038;elem);
return 0;
}