Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> C /C + + Programming >> .

Come creare un albero binario in C

alberi binari in C sono un buon modo per organizzare dinamicamente i dati per facilitarne la ricerca . Tuttavia, richiedono un sacco di lavoro da mantenere.
Istruzioni Creare l' albero binario
1

Struttura tuo albero binario . Ogni albero binario avrà bisogno di una struttura , anche se ha una sola variabile . Scegli un nome , quindi utilizzare typedef per crearlo :

 typedef struct student_data STUDENT_DATA ; 
2

definire la struttura . Includere due puntatori alla stessa struttura: struct

 student_data { int student_id ; int student_grade ; STUDENT_DATA * a sinistra , a destra * ;} ; 
3

assegnare un puntatore a questa struttura dati , inizializzazione di NULL , di essere la testa di albero :

 STUDENT_DATA * studenti = NULL; 
Aggiungi al binario albero
4

Allocare due puntatori temporanei della struttura dati :

 STUDENT_DATA new_student * , * cur_student ; 
5

Usa malloc ( ) per creare un nuovo elemento , il controllo sempre per un errore :

 if ( ( new_student = malloc ( sizeof ( STUDENT_DATA ) ) ) == NULL ) { abort (); } Pagina 6 

popolare i campi del nuovo elemento . Impostare i campi di destra e sinistra per NULL :

 new_student - > student_id = newid ; new_student - > student_size = newsize ; new_student - > sinistro = NULL; new_student - > destra = NULL; 
7

consideri la testa variabile . Se la variabile di testa è NULL , questo è il primo elemento aggiunto alla struttura , in modo da impostare la testa variabile per puntare a esso , e il gioco è fatto :

 se { studenti = new_student ; return; } < (studenti ! ) br> 8 

Inizia la parte superiore della struttura :

 cur_student = studenti , mentre ( cur_student ) { Pagina 9 

Maneggiare la voce duplicata se il nuovo valore e il valore corrente sono uguali :

 if ( newid == cur_student - > student_id ) { abort (); } 
10

Deal con valori diversi . Se il nuovo valore è inferiore al valore corrente , il nuovo elemento va sulla sinistra . Aggiungere immediatamente se non c'è niente di sinistra . In caso contrario , traversa a sinistra e loop :

 se ( newid student_id ) {if ( cur_student - > sinistro == NULL) { cur_student - > sinistro = newstudent ; return 1; } cur_student = cur_student - > sinistro ; 
11

Fate la stessa cosa a destra , altrimenti :

 } else {if ( cur_student - > destro == NULL) { cur_student - > destra = newstudent ; return 1; } cur_student = cur_student - > destra ; } } 
Cerca il file binario Albero
12

Creare una variabile temporanea che punta alla struttura dati :

 STUDENT_DATA * cur_student ; Pagina 13 

la variabile temporanea per la testa variabile :

 cur_student = students_head ; Pagina 14 

loop attraverso gli elementi , il controllo per il valore desiderato :

 mentre ( cur_student ) {if ( cur_student - > student_id == 15) {return cur_student - > student_grade ; } 
15

Filiale di sinistra o di destra , e loop , se non viene trovato :

 se ( cur_student - > student_id cur_student = cur_student - > destra ; } else { cur_student = cur_student - > left; } Pagina 16 

Vedere se il ciclo termina Se lo fa , significa che non hai mai trovato l' articolo: .

 } return 0; 
Clean Up
17

deallocare l'albero binario quando il programma termina , come non tutti i sistemi operativi sono in grado di gestire questo automaticamente questo è fatto meglio utilizzando una funzione ricorsiva : .

 vuoto deallocate_binary_tree ( STUDENT_DATA * albero ) { 
18

Osservare : se c'è non è un albero , non c'è niente da fare : se

 ritorno ; 
19

deallocare i sottoalberi sinistro e destro in modo ricorsivo ( albero ! ) :

 deallocate_binary_tree ( albero - > sinistra) ; deallocate_binary_tree ( albero - > a destra) ; 
20

deallocare l'elemento , e il gioco è fatto :

 libero ( albero );} 

 

Programmazione © www.354353.com