Version:0.9 StartHTML:0000000105 EndHTML:0000005221 StartFragment:0000000152 EndFragment:0000005187
/******************************************************/
/*************** Isidro Pastor Jorda ******************/
/*************** Noemi Ruth Moya Hinojo ***************/
/******************************************************/
/****************** Telematica ************************/
/******************** FPII ****************************/
/****************** Practica 3 ************************/
/******************************************************/


#include <iostream.h>
#include <stdlib.h>
#include "PilaD.h"

/*****************************************************************************
* Funcion: Pila
* Descripcion: Constructor de clase Pila
*
*
*
* Parametros:
*
* Nombre        E/S       Descripcion
* ------       -----      -----------
*
*
*
*
* Valor devuelto:
*       Inicializa un objeto de la clase pila
*****************************************************************************/


Pila::Pila(void)
{
    top = NULL;
};


/*****************************************************************************
* Funcion: Apilar
* Descripcion: Apila el elemento x en el objeto pila
*
*
*
* Parametros:
*
* Nombre        E/S       Descripcion
* ------       -----      -----------
*    x           E        Elemento a apilar en el objeto pila
*
*
*
* Valor devuelto:
*       bool, cierto si se puede apilar, falso en caso contrario
*****************************************************************************/

bool Pila::Apilar (int x)
{
    nodo *aux;
    aux = new nodo;

    aux -> Datos = x;
    aux -> sig = top;
    top = aux;

    return (true);
};

/*****************************************************************************
* Funcion: Desapilar
* Descripcion: Desapila el primer elemento del objeto pila que hace la llamada
*
*
*
* Parametros:
*
* Nombre        E/S       Descripcion
* ------       -----      -----------
*
*
*
*
* Valor devuelto:
*       Bool, cierto si se ha podido desapilar, falso en caso contrario
*****************************************************************************/

bool Pila::Desapilar (void)
{
    bool ok;
    nodo *aux;

    if(PilaVacia())
        ok = false;

    else
    {
        aux = top;
        top = top -> sig;
        delete aux;
        ok = true;
    }

    return (ok);

};

/*****************************************************************************
* Funcion: CimaPila
* Descripcion: Almacena en el valor pasado como parametro el valor del primer
*              elemento del objeto pila que hace la llamada
*
*
*
* Parametros:
*
* Nombre        E/S       Descripcion
* ------       -----      -----------
*    x          E/S        Donde almacenaremos el valor de la cima de la pila
*
*
*
* Valor devuelto:
*       Bool, cierto si se ha podido asignar la cima, falso en caso contrario
*****************************************************************************/

bool Pila::CimaPila (int & x)
{
    bool ok;

    if(PilaVacia())
        ok = false;

    else
    {
        ok = true;
        x = top -> Datos;
    }

     return (ok);
};


/*****************************************************************************
* Funcion: PilaVacia
* Descripcion: Nos dira si en el objeto pila que hace la llamada hay elementos
*              o por el contrario esta vacia
*
*
*
* Parametros:
*
* Nombre        E/S       Descripcion
* ------       -----      -----------
*
*
*
*
* Valor devuelto:
*       bool, cierto si la pila esta vacia, falso en caso contrario
*****************************************************************************/

bool Pila::PilaVacia (void)
{
    return(top == NULL);
};


/*****************************************************************************
* Funcion: ~Pila
* Descripcion: Destructor de clase Pila
*
*
*
* Parametros:
*
* Nombre        E/S       Descripcion
* ------       -----      -----------
*
*
*
*
* Valor devuelto:
*       Destruye la clase pila cuando termina su ambito de uso
*****************************************************************************/

Pila::~Pila()
{
    nodo *aux;

    while (!PilaVacia())
    {
        aux = top->sig;
        delete top;
        top = aux;
    }
};