Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako vytvoriť binárny strom v C

Binárne stromy v C sú dobrý spôsob, ako dynamicky organizovať dáta pre ľahké vyhľadávanie . Avšak , oni vyžadujú veľa práce udržať . Návod
Vytvorte binárny strom
1

Štruktúra vaše binárny strom . Každý binárny strom bude potrebovať štruktúru , aj keď to má len jednu premennú . Vyberte si meno , potom použiť typedef ju vytvoriť :

 typedef struct student_data STUDENT_DATA ; 
2

Definujte štruktúru . Zahrnúť dva ukazovatele na rovnakej štruktúre :

 struct { int student_data student_ID int student_grade ; STUDENT_DATA * vľavo , * právo ; } ; 
3

Prideliť ukazovateľ na túto štruktúru dát , inicializáciu na NULL , bude stromu hlava :

 STUDENT_DATA * študenti = NULL ; 
Pridať do binárneho stromu
4

Prideliť dva dočasné ukazovatele na dátové štruktúry :

 STUDENT_DATA * new_student , * cur_student ; 
5

Používanie malloc ( ) na vytvorenie nového prvku , vždy kontrola chyby :

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

Vyplnenie polí nového elementu . Nastaviť jeho ľavého a pravého poľa na hodnotu NULL :

 new_student - > student_ID = newid , new_student - > student_size = newsize , new_student - > doľava = NULL ; new_student - > right = NULL ; 
7

Zvážte hlavu variabilný . Je-li premenná hlava je NULL , to je prvý prvok pridaný do stromu , takže nastavte premennú hlavy poukázať na to , a máte hotovo :

 if ( studentů! ) { Študenti = new_student ; return ; } 
8

Začnite v hornej časti stromu :

 cur_student = študenti , zatiaľ čo ( cur_student ) { 
9

zaobchádzajte duplicitné položky, ak je nová hodnota a aktuálna hodnota je rovná :

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

vysporiadať s nerovným hodnotami . Ak je nová hodnota je nižšia , než je aktuálna hodnota , nový prvok sa vkladá vľavo . Okamžite pridať , ak nič na ľavej strane . V opačnom prípade , Traverse vľavo a slučka :

 if ( newid student_ID ) { if ( cur_student - > left == NULL ) { cur_student - > doľava = newstudent , vráti 1 ; } cur_student = cur_student - > left ; 
11

Vykonajte to isté na pravej strane , inak :

 } else { if ( cur_student - > pravý == NULL ) { cur_student - > right = newstudent , vráti 1 ; } cur_student = cur_student - > pravý ; } } 

Hľadať v binárny strom
12

vytvoriť dočasnú premennú ukazujúci na dátové štruktúry :

 STUDENT_DATA * cur_student ; 
13

Nastavte svoj ​​dočasnú premennú do hlavy premenná:

 cur_student = students_head ; 
14

slučku prvkov , kontrola na požadovanú hodnotu :

 while ( cur_student ) { if ( cur_student - > student_ID == 15 ) { return cur_student - > student_grade ; } 
15

Branch vľavo alebo vpravo a slučky , pokiaľ to nie je nájdené:

 if ( cur_student - > student_ID cur_student = cur_student - > pravý ; } else { cur_student = cur_student - > vľavo ; } 
16

Pozrite sa , či slučka skončí ak tomu tak , znamená to , že ste nikdy nájdené položky : .

 } return 0 ; 
Clean Up
17

. navrátiť binárny strom , keď váš program skončí , pretože nie všetky operačné systémy budú riešiť tento problém automaticky To sa najlepšie vykonáva pomocou rekurzívne funkcie :

 void deallocate_binary_tree ( STUDENT_DATA * strom ) { 
18

dodržiavať : V prípade , že nie je žiadny strom , nič robiť : ( ! strom )

 ak return ; 
19

navrátiť ľavej a pravej podstromy rekurzívne :

 deallocate_binary_tree ( tree - > vľavo ) ; deallocate_binary_tree ( strom - > vpravo ) ; 
20

navrátiť prvok , a máte hotovo :

 zadarmo ( strom ) ; } 

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené