salve a tutti e grazie a chiunque risponderà a questo messaggio.
vado dritto al sodo : la funzione che devo scrivere prende in input un struttura ad albero binario(completa di tutti i nodi)
e la deve trasformare in una matrice.
con h altezza albero e f numero di foglie quindi sarà una matrice (h+1)xf
il problema è questo e non riesco a capire dov'è l'errore: per gestire dinamicamente gli array devo usare vettori di puntatori
e quindi creo l'array di puntatori con delle calloc e ognuno di essi punta a una riga .
Quando vado a fare delle stampe per vedere se funziona non da segmentation fault ma non stampa nulla! ecco la piccola porzione di codice su cui sto testando il
funzionamento:
codice:
typedef int** matrice;
void stampa(int n,matrice a) {
int i,j;
for (i=0;i<n;i++)
for(j=0;j<n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
int main() {
matrice a;
int n = 3;
a = (matrice)calloc(n,sizeof(*a));
if (!a) {
printf("Errore nella calloc\n");
}
int i,j;
for (i=0;i<3;i++) {
a[i] = (int*)calloc(n,sizeof(**a));
if (!a[i]) {
printf("Errore nella calloc\n");
}
for (i=0;i<n;i++) {
for (j=0;j<n;j++)
a[i][j] = 0;
}
stampa(n,a);
}