La guerra de la galaxiz

Algoritmo de la función «push»:
1. Creamos un nodo para el valor que colocaremos en la pila.
2. Hacemos que nodo->siguiente apunte a Pila.3. Hacemos que Pila apunte a nodo.
void Push(Pila *pila, int v) {
pNodo nuevo;

/* Crear un nodo nuevo */
nuevo = (pNodo)malloc(sizeof(tipoNodo));
nuevo->valor = v;/* Añadimos la pila a continuación del nuevo nodo */
nuevo->siguiente = *pila;
/* Ahora, el comienzo de nuestra pila es en nuevo nodo */
*pila = nuevo;
}
Algoritmo de la función «pop»:1. Hacemos que nodo apunte al primer elemento de la pila, es decir a Pila.
2. Asignamos a Pila la dirección del segundo nodo de la pila:Pila->siguiente.
3. Guardamos el contenido del nodo para devolverlo como retorno, recuerda que la operación pop equivale a leer y borrar.
4. Liberamos la memoriaasignada al primer nodo, el que queremos eliminar.
int Pop(Pila *pila) {
pNodo nodo; /* variable auxiliar para manipular nodo */
int v; /* variable auxiliar para retorno */

/* Nodoapunta al primer elemento de la pila */
nodo = *pila;
if(!nodo) return 0; /* Si no hay nodos en la pila retornamos 0 */
/* Asignamos a pila toda la pila menos el primer elemento */
*pila =nodo->siguiente;
/* Guardamos el valor de retorno */
v = nodo->valor;
/* Borrar el nodo */
free(nodo);
return v;
}
Código del ejemplo completo:
#include
#include

typedefstruct _nodo {
int valor;
struct _nodo *siguiente;
} tipoNodo;

typedef tipoNodo *pNodo;
typedef tipoNodo *Pila;

/* Funciones con pilas: */
void Push(Pila *l, int v);
int Pop(Pila*l);

int main() {
Pila pila = NULL;

Push(&pila, 20);
Push(&pila, 10);
printf(«%d, «, Pop(&pila));
Push(&pila, 40);
Push(&pila, 30);

printf(«%d, «, Pop(&pila));…