Un'ottima alternativa che viene spesso usata per ogni sorta di lista è usare una struttura di supporto che aiuti a gestire la lista stessa.
codice:
typedef struct {....} NODO;

typedef struct
{
    NODO* root;
    NODO* current;
    ...altri parametri.
}TREE;


int tree_add ( TREE* t , ... )
{
     ...
     if ( t->root == NULL )
     {
          t->root = newnodo;
          return 1;
     }
     ...
}
BUON ANNO