Devo lavorare con un abr di nome symtab i cui nodi fatti in questo modo:
codice:
typedef struct symtab_node
{
	char ID;
	boolean inizializzata;

	struct symtab_node* SX;
	struct symtab_node* DX;
}symtab_node;

typedef symtab_node* symtab;
Dovrei farmi le funzioni di inserimento e di ricerca di un'elemento (ricercato tramite char ID quindi gli elementi sono messi in ordine in base a quella stringa)
L'inserimento non da problemi ma non so se funziona veramente(la prima funzione è di appoggio alla seconda che è la vera funzione di inserimento):
codice:
static void symtabins(symtab_node** new,char *nome){
	if(new != NULL){
		*new = ( symtab_node *) malloc( sizeof(symtab_node));
		assert(*new != NULL);
		strcpy(&(*new)->ID,nome);
		(*new)->inizializzata == FALSE;
		(*new)->DX = NULL;
		(*new)->SX = NULL;
	}
}

void symtab_init()
{
	radice = NULL;
}

void symtab_aggiungi(char *nome){
	if( radice == NULL ){
		symtabins(&radice,nome);
	}
	else if(radice != NULL ){
		symtab_node* tmp = radice;
		int i;
		while( TRUE ){
			i = strcmp(&tmp->ID,nome);
			if( i == 0) return;
			else if( i == -1 ){
				if( tmp->SX != NULL) tmp = tmp->SX;
				else symtabins( &(tmp->SX),nome );
			}
			else if( i == 1 ){
				if( tmp->DX != NULL) tmp = tmp->DX;
				else symtabins( &(tmp->DX),nome );
			}
		}
	}
}
Ma la ricerca di un elemento per dire se esiste o per aggiornare la variabile booleana inizializzata come si potrebbe fare. L'algoritmo da seguire è quello dell'inserimento?