#include "pila.h"
#include <stdio.h>
#include <stdlib.h>


//NODO

pNodo crearNodo(tDato dato){
    // reservo un espacio de memoria dinamica para crear el nodo
    pNodo nodo= (pNodo) malloc (sizeof(nodo));
    // asigno los valores correspondientes a los campos del struct nodo
    nodo-> dato = dato;
    nodo-> siguiente=NULL;
    return nodo;
}

void destruirNodo(pNodo nodo){
    //(*nodo)->siguiente = NULL; //?????
    free(nodo);
}

int esPilaVacia (pPila pila){
    return (pila==NULL);
}

// apilar = push
void apilar (pPila *pila, tDato dato){
    //creo el nodo en memoria dinamica
     pNodo nodo=crearNodo(&dato);
     // asigno a "siguiente" la direccion de donde hasta ahora apunta la pila, o sea, al nodo que ahora será el siguiente.
     nodo-> siguiente = *pila;
     // le asigno a pila la dirección del nodo creado recién
     *pila = nodo;
    return pila;
}


void desapilar (pPila *pila){
    if (*pila != NULL){
        // creo un nodo auxiliar para no perder la direccion del nodo a eliminar y le asigno la direccion actual de la pila
        pNodo nodoAEliminar = *pila;
        // le asigno, a la pila, la direccion del siguiente nodo
        *pila = (*pila)->siguiente;
        // libero la memoria reservada para el nodo que tengo que eliminar.
        destruirNodo(nodoAEliminar);
    }
    return pila;
}

char ultimoElemento(pPila pila){
    if (pila != NULL){
        return pila -> dato;
    }
}






