[C] domanda su NULL

di il
4 risposte

[C] domanda su NULL

Salve,
per il mio programma ho dovuto creare una struttura ad albero binario. Ogni nodo è rappresentato da questa struct:
struct tree{
	char doma_risp[52];//testo del nodo
	unsigned long prec;//indice del nodo superiore
	unsigned long sx;//indice del sottonodo sinistro
	unsigned long dx;//indice del sottonodo destro
	int conta; //livello dell'albero
	bool foglia;//if 0 nodo interno, if 1 foglia
	bool pieno;//if 0 vuoto, if 1 pieno
};
prec, sx e dx contengono l'indice che moltiplicato per sizeof(struct tree) mi danno la posizione di un altro nodo nel file binario in cui ho salvato l'albero.

in alcuni casi, però, non esiste un indice da mettere dentro (per esempio una foglia non ha sottonodi e di conseguenza dx e sx non punterebbero a niente). mi stavo chiedendo quindi se in questi casi mi era possibile salvarli come NULL per indicare che non esiste un indice a cui puntare o significherebbe puntare all'indice 0?

grazie in anticipo

4 Risposte

  • Re: [C] domanda su NULL

    NULL è definito come (void*)0 in C pertanto non poi assegnarlo a un unsigned long.
    In ogni caso per le foglie puoi assegnare (unsigned long)-1 che equivale a un indice sull'ordine dei 2 miliardi.
    Va bene anche UINT_MAX (se ricordo il nome della macro).
  • Re: [C] domanda su NULL

    Ok grazie. ma c'è possibilità di incappare in qualche errore assegnando -1 ad un unsigned long o è totalmente sicuro?
  • Re: [C] domanda su NULL

    Sicuro è sicuro, a meno che non raggiungi un indice pari a 0xFFFFFFFF (che onestamente vedo un po' dura).
  • Re: [C] domanda su NULL

    Grazie mille. il massimo a cui posso arrivare è intorno ai 4 milioni quindi posso stare tranquillo
Devi accedere o registrarti per scrivere nel forum
4 risposte