Ciao ragazzi,
avrei un piccolo problema. Ho realizzato deu strutture di alberi,una con vettore ed una con puntatore. La prima usa tra i parametri, un nodo di tipo int. Quella con puntatore invece una classe nodo realizzata per l'occasione. Nella classe base quindi come definisco questo nodo, che nelle derivate è invece definito come due tipi diversi?
albero con vettore
codice:
template <class tipoelem>
class alberobinvet : public alberobinario<tipoelem>
{
public:
typedef int nodo;
alberobinvet();
void creabinalbero();
bool binalberovuoto();
nodo binradice();
nodo binpadre(nodo);
nodo figliosinistro(nodo);
nodo figliodestro(nodo);
bool sinistrovuoto(nodo);
bool destrovuoto(nodo);
tipoelem legginodo(nodo);
void scrivinodo(nodo, tipoelem);
void insbinradice(nodo);
void insfigliosinistro(nodo);
void insfigliodestro(nodo);
void cancsottobinalbero(nodo);
typedef struct Cella
{
tipoelem elemento;
int sinistro;
int destro;
int padre;
} cella;
private:
cella *spazio;
nodo libero;
nodo radice;
int numnodi;
int nodiliberi;
};
#endif
albero con puntatore
codice:
template<class tipoelem>
class alberobinp
{
public:
typedef nodoalberop<tipoelem> *nodo;
alberobinp();
void creabinalbero();
bool binalberovuoto();
nodo binradice();
nodo binpadre(nodo);
nodo figliosinistro(nodo);
nodo figliodestro(nodo);
bool sinistrovuoto(nodo);
bool destrovuoto(nodo);
tipoelem legginodo(nodo);
void scrivinodo(nodo, tipoelem);
void insbinradice(nodo);
void insfigliosinistro(nodo);
void insfigliodestro(nodo);
void cancsottoalbero(nodo);
private:
nodo radice;
};
classe nodo
codice:
template<class tipoelem>
class nodoalberop
{
public:
nodoalberop();
void setpadre(nodoalberop *);
void setfigliosx(nodoalberop *);
void setfigliodx(nodoalberop *);
void setetichetta(tipoelem);
nodoalberop *getpadre();
nodoalberop *getfigliosx();
nodoalberop *getfigliodx();
tipoelem getetichetta();
nodoalberop operator=(nodoalberop);
private:
nodoalberop *padre;
nodoalberop *figliosx;
nodoalberop *figliodx;
tipoelem etichetta;
};