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

#include <iostream.h>
#include <stdlib.h>
#include "ColaE.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 = 0;
    fin = 0;
};

/*****************************************************************************
* Funcion: sig
* Descripcion: Funcion que devuelve el valor del siguiente elemento de la Cola circular
*
*
*
* Parametros:
*
* Nombre        E/S       Descripcion
* ------       -----      -----------
*    x          E         Indice del que queremos hayar el siguiente elemento
*
*
*
* Valor devuelto:
*       Un entero que sera la siguiente posicion de la Cola circular
*****************************************************************************/

int Cola::sig(int x)
{
    return ( (x+1)%TALLAMAX);
}

/*****************************************************************************
* 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)
{
    bool ok;

    if( sig(fin) == inicio)
        ok = false;

    else
    {
        ok = true;
        Info[fin] = x;
        fin = sig(fin);
    }

    return(ok);
};

/*****************************************************************************
* 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;

    if(ColaVacia())
        ok = false;
    else
    {
        ok = true;
        inicio = sig(inicio);
    }
    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 = Info[inicio];
    }

    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(inicio == fin);
};