Salve a tutti,
ho un problema veramente strano su una determinata realizzazione degli alberi N-ari.
In poche parole ho una superclasse che si chiama Albero, che ha solo metodi virtuali, ed una classe figlia AlberiLD che implemente una determinata realizzazione di alberi in questo modo:
Ovvero ci sono due tipi di nodo, un nodo etichetta ed un nodo di servizio. Il nodo etichetta punta ad un etichetta di tipo _tipoelem, ed al primo figlio del nodo stesso.
Il figli a loro volta sono una lista di nodi di servizio (puntati dai vari puntatori a primo figlio) sono una lista di puntatori che puntano al fratello di un determinato nodo, ed ad un etichetta.
Ovvero ho una radice R di tipo nodo etichetta, se prendo il puntatore a primofiglio ottengo il primo della lista di nodi di servizio, questa lista è una lista di puntatori ai figli di R. Spostandomi su un figlio di R potrò passare ad un'altra lista di nodi servizio per ottenere i figli del figlio di R e così via.
Non ci sono collegamenti verso l'alto ovvero ogni volta per sapere il padre di un nodo devo scorrrermi l'albero n-ario dalla radice e farmi i confronti.
I due tipi di nodi vengono gestiti tramite una union che mi sta dando non pochi problemi.
Un problmea che mi da è che la mia funzione insprimofiglio (che inserisce un albero come primo figlio di un determinato nodo), applicata sulla radice, mi inserisce il primo figlio, il secondo, poi quando inserisce il terzo mi perde il primo, quando inserisco il quarto mi perde il secondo. Insomma non so come mi rimangono memorizzati solo gli ultimi nodi inseriti.
Ci sto veramente impazzendo da tutta una giornata, vi copioincollo il codice su ideone e se avete qualche idea è sempre ben accetta
http://www.ideone.com/QtiTi
Vi ringrazio in anticipo per qualsiasi aiuto,
Neptune.