/* * realizzazione di alberi n-ari: * La classe CellaN è la struttura che contiene le informazioni sul nodo * (label, padre, primofiglio e fratellosuccessivo nella relazione d'ordine * tra nodi figli) * Se fratellosuccessivo vale NULL allora il nodo non ha fratelli. */ #ifndef ALBERON_H #define ALBERON_H /* * include il file nodo.h contenente la classe Nodo, per avere dei tipi di dato * complesso per tipoelem * si accede alla label del nodo mediante il metodo [get|set]Etichetta() * il metodo usa un tipo tipoelem_nodo (che può essere modificato in nodo.h) * la rappresentazione scelta per l'albero n-ario è di lista dinamica * si usa la classe CellaN per poter accedere ai parenti dei nodi */ typedef int tipoelem; class CellaN{ public: void setlabel(tipoelem); tipoelem getlabel(); void setprimofiglio(CellaN * ); CellaN * getprimofiglio(); void setfratellosucc(CellaN * ); CellaN * getfratellosucc(); void setpadre(CellaN * ); CellaN * getpadre(); private: tipoelem label; CellaN * primofiglio; CellaN * fratellosucc; CellaN * padre; }; typedef bool boolean;//per coeranza con le specifiche typedef CellaN * nodoN; /* * nodo è un puntatore a CellaN che individua * ogni singolo elemento dell'albero */ class Albero{ public: void creaalbero(); boolean alberovuoto(); nodoN radice(); nodoN padre(nodoN); nodoN primofiglio(nodoN); nodoN succfratello(nodoN); boolean ultimofratello(nodoN); boolean foglia(nodoN); void cancsottoalbero(nodoN &);//cancellando la radice, nodo vale NULL tipoelem legginodo(nodoN); void scrivinodo(tipoelem,nodoN); void insradice(); void inssottoalbero(nodoN,nodoN,nodoN); private: nodoN albero;//l' albero è un puntatore ad oggetto classe }; #endif