La cosa più semplice che puoi fare è sostituire il vettore di int con una struttura che contiene sia il vettore che la quantità di elementi.
Esempio veloce (non testato):
Codice:
typedef struct {
int *num = NULL;
size_t size = 0;
} vector;
void ridimensiona(vector *x, size_t dimensione)
{
(*x).num = (vector *) realloc((*x).num, sizeof(int) * dimensione);
(*x).size = dimensione;
}
void aggiungi(vector *x, int valore);
{
ridimensiona(&(*x), (*x).size+1);
(*x).num[size-1] = valore;
}
int main()
{
//[...]
vector albero;
aggiungi(&albero, 10);
printf("Il primo elemento è %d e la dimensione è %d", albero.num[0], albero.size);
//[...]
return 0;
}
Questo dovrebbe mostrare "10" e "1", ma non so se funziona.
In ogni caso se hai la possibilità di usare il C++ i std::vector ti alleggerirebbero il lavoro di molto.