Version:0.9 StartHTML:0000000105 EndHTML:0000006134 StartFragment:0000000152 EndFragment:0000006100
/******************************************************/
/*************** Isidro Pastor Jorda ******************/
/*************** Noemi Ruth Moya Hinojo ***************/
/******************************************************/
/****************** Telematica ************************/
/******************** FPII ****************************/
/****************** Practica 4 ************************/
/******************************************************/

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

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

Cola::Cola()
{
    inicio = NULL;
    fin = NULL;
};

/*****************************************************************************
* Funcion: ~Cola
* Descripcion: Destructor de clase Cola
*
*
*
* Parametros:
*
* Nombre        E/S       Descripcion
* ------       -----      -----------
*
*
*
*
* Valor devuelto:
*       Destruye el objeto de la clase Cola
*****************************************************************************/

Cola::~Cola()
{
    while(!ColaVacia())
        Desencolar();
};


/*****************************************************************************
* Funcion: Cola
* Descripcion: Constructor de copia de clase Cola
*
*
*
* Parametros:
*
* Nombre        E/S       Descripcion
* ------       -----      -----------
*   c           E/S       Origen de la copia
*
*
*
* Valor devuelto:
*       Hace una copia del objeto de la clase Cola
*****************************************************************************/

Cola::Cola(const Cola & c)
{
    inicio = NULL;
    fin = NULL;

    Nodo *aux;
    aux = c.inicio;

    while ( aux != NULL )
    {
        Encolar( (aux->info) );
        aux = aux->sig;
    }

};


/*****************************************************************************
* Funcion: Encolar
* Descripcion: Inserta un elemento al objeto de clase Cola que hace la llamada.
*
*
*
* Parametros:
*
* Nombre        E/S       Descripcion
* ------       -----      -----------
*   x           E          Dato introducido en la Cola
*
*
*
* Valor devuelto:
*       True si ha podido encolar el dato en el objeto, false en caso contrario
*****************************************************************************/

bool Cola::Encolar(Dato x)
{

    Nodo *aux;
    aux = new Nodo;

    aux -> info = x;
    aux -> sig = NULL;

    if(ColaVacia())
        inicio = aux;
    else
        fin -> sig = aux;


    fin = aux;
    return(true);

};


/*****************************************************************************
* Funcion: Desencolar
* Descripcion: Elimina un elemento del objeto de clase Cola que hace la llamada.
*
*
*
* Parametros:
*
* Nombre        E/S       Descripcion
* ------       -----      -----------
*
*
*
*
* Valor devuelto:
*       True si ha podido desencolar el dato en el objeto, false en caso contrario
*****************************************************************************/

bool Cola::Desencolar()
{
    bool ok;

    Nodo *aux;

    if(ColaVacia())
        ok = false;
    else
    {
         ok = true;

         if(inicio == fin)
         {
             delete inicio;
             inicio = NULL;
             fin = NULL;
         }
         else
         {
             aux = inicio;
             inicio = inicio -> sig;
             delete aux;
         }
    }
    return(ok);
};


/*****************************************************************************
* Funcion: PrimeroCola
* Descripcion: Obtiene el primer elemento del objeto de clase Cola que hace la llamada.
*
*
*
* Parametros:
*
* Nombre        E/S       Descripcion
* ------       -----      -----------
*  res          E/S       Variable donde almacenaremos el primer Dato de la Cola
*
*
*
* Valor devuelto:
*       True si existe primer dato en el objeto, false en caso contrario.
*****************************************************************************/

bool Cola::PrimeroCola(Dato &res)
{
    bool ok;
    if(ColaVacia())
        ok = false;
    else
    {
        ok = true;
        res = inicio -> info;
    }

    return(ok);
};


/*****************************************************************************
* Funcion: ColaVacia
* Descripcion: Nos indica si el objeto Cola que hace la llamada esta vacio.
*
*
*
* Parametros:
*
* Nombre        E/S       Descripcion
* ------       -----      -----------
*
*
*
*
* Valor devuelto:
*       True si el objeto Cola esta vacia, false en caso contrario.
*****************************************************************************/


bool Cola::ColaVacia()
{
    return(fin == NULL);
};