El Guru Programador
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Jorge Luis Valdes(UCI)-(COLA DOBLE)
Autor [jlvaldes] Calificacion
Este es la implementacion de una cola doble. No esta completa, pero espero les sirva.......

//---------------------------------------------------------------------------

#ifndef Unit2H
#define Unit2H


// Declaracion de la clase NodoDE
template
class NodoDE
{
private:
T dato;
NodoDE*siguiente;
NodoDE*anterior;
public:
inline NodoDE(T, NodoDE*, NodoDE*);
inline NodoDE();
inline NodoDE(T);
inline NodoDE(const NodoDE&);
__property T PDato ={read=dato,write=dato};
__property NodoDE* PSiguiente = {read = siguiente,write = siguiente};
__property NodoDE* PAnterior = {read = anterior,write = anterior};



};

//-----------------------------------------------------------------------------
template
NodoDE::NodoDE(T Dato, NodoDE*nodo=NULL,NodoDE*anodo=NULL)
{
dato=Dato;
siguiente=nodo;
anterior=anodo;
};
//-----------------------------------------------------------------------------
template
NodoDE::NodoDE()
{
dato=NULL;
siguiente=NULL;
anterior=NULL;
}




template
NodoDE::NodoDE(T p_dato)
{
dato=p_dato;
siguiente=NULL;
anterior=NULL;
}
//------------------------------------------------------------------------------
template
NodoDE::NodoDE(const NodoDE& nodo)
{
dato=new T(nodo.dato);
*siguiente=*(nodo.siguiente);
*anterior=*(nodo.anterior);
}
//---------------------------------------------------------------------------
#endif






//---------------------------------------------------------------------------

#ifndef Unit3H
#define Unit3H
#include "Unit2.h"



/*EJERCICIO 3 GUIA*/

template
class Cola_Doble
{
private:
NodoDE* frente;
NodoDE* fondo;
int longitud;


public:
Cola_Doble();
Cola_Doble(int);
Cola_Doble(const Cola_Doble &);

void Adicionar_Delante(T);
void Adicionar_Detras(T);


bool Is_Empty();
T Frente();
T Fondo();

T Extraer_Delante();
T Extraer_Detras();

~ Cola_Doble();
};




template
Cola_Doble::Cola_Doble()
{
longitud=0;
frente=fondo=NULL;
}





template
void Cola_Doble::Adicionar_Delante(T elem)
{
NodoDE* nodo=new NodoDE(elem);
if(longitud==0)
{
frente=nodo;
fondo=nodo;
}

else
{
nodo->PSiguiente=frente;
frente->PAnterior=nodo
frente=nodo;
}

}




template
void Cola_Doble::Adicionar_Detras(T elem)
{
NodoDE* nodo=new NodoDE(elem);
if(longitud==0)
{
frente=nodo;
fondo=nodo;
}

else
{
fondo->PSiguiente=nodo;
nodo->PAnterior=fondo;
fondo=nodo;
}

}





template
bool Cola_Doble::Is_Empty()
{
return (fondo==frente);
}




template
T Cola_Doble::Frente()
{
if(longitud==0)
return NULL;
else
return frente->PDato;
}




template
T Cola_Doble::Fondo()
{
if(longitud==0)
return NULL;
else
return fondo->PDato;
}





template
T Cola_Doble::Extraer_Delante()
{
if(!frente)
{
T dato = frente->PDato;
frente=frente->PSiguiente;
delete [] frente->PAnterior;
return dato;
}

else
throw "ERROR";
}


template
T Cola_Doble::Extraer_Detras()
{
if(frente!=fondo)
{
T aux=fondo->PDato;
fondo=fondo->PAnterior;
delete [] fondo->PSiguiente;
}

}





template
Cola_Doble::~Cola_Doble()
{
delete [] frente;
delete [] fonde;
}
//---------------------------------------------------------------------------
#endif
?
Terminos de Uso

1 - Copiar o Descargarse este contenido implica aceptar los terminos aqui detallados.

2 - Usted puede utilizar este contenido en sus propios programas y puede compilarlo en un programa y modificarlo a su gusto.

3 - Usted NO PUEDE redistribuir este contenido tal como se presenta aqui sin el permiso del autor original del mismo.

4 - Usted seguir? cualquier restricci?n adicional del copyright que el autor pudo haber puesto en la descripci?n del contenido.

?

Contactos myStudio Network