Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] Alberi Binari di Ricerca

    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?

  2. #2
    utilizza un algoritmo di ricerca binario, essendo un albero binario ordinato e' anche ad alta efficienza

  3. #3
    potreste postarlo? o almeno più o meno i passi da eseguire? grazie!

  4. #4
    guarda su wikipedia

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.