PDA

View Full Version : [C]Creazione di un albero generico


devil_prince
13-06-2011, 11:29
Speriamo di avere risposta almeno a questo:cry:
ho un problema con un esercizio, creazione di un albero qualsiasi partendo dalla coda (elemento e indirizzo del padre)...riesco a copiare l'elemento ed il grado, ma non i figli...mi date una mano
#include <stdio.h>
#include <stdlib.h>

typedef struct input {
char elem;
int ind_padre;}Input;

typedef struct nodo {
char elem;
int grado;
int figli[4];
} Nodo;
void main ()
{
Input elementi[12]={{'M',2},
{'A',4},
{'T',10},
{'F',2},
{'E',-1},
{'Z',4},
{'L',2},
{'S',1},
{'B',1},
{'P',2},
{'R',4}};
Nodo albero[12];
int i, j, temp_grado, cont_figli=0;
char c;
for(i=0;i<11;i++){
for(j=0;j<4;j++){
albero[i].grado=0;
albero[i].figli[j]=0;}
printf("inf=%c\tgr=%d\tpt1=%d\tpt2=%d\tpt3=%d\tpt4=%d\n",albero[i].elem, albero[i].grado,albero[i].figli[0],albero[i].figli[1],albero[i].figli[2],albero[i].figli[3]);}
puts("\n\n\n\n");
for(i=0;i<11;i++){
albero[i].elem = elementi[i].elem;
temp_grado = elementi[i].ind_padre;
albero[temp_grado].grado++;
albero[temp_grado].figli[temp_grado] = i;
}
for(i=0;i<11;i++){
printf("inf=%c\tgr=%d\tpt1=%d\tpt2=%d\tpt3=%d\tpt4=%d\n",albero[i].elem, albero[i].grado,albero[i].figli);}


}

BlackShark92
13-06-2011, 19:24
Mmmm, mi sa che c'è un problema con quella typedef. Un albero è costituito da nodi, giusto?Ogni nodo deve contenere un valore (il dato) e due puntatori (uno che punti al ramo sinistro, e l'altro al destro), che mi pare tu non abbia dichiarato nella typedef del nodo. :D