| Jorge Luis Valdes(UCI)-(COLA DOBLE) |
|
|
|
| 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.
|
|
|
?
|
|