Datamaskin
  | Hjem | Hardware | Nettverk | Programmering | Software | Feilsøking | Systems | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringsspråk
  • Delphi Programming
  • Java Programming
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl Programming
  • Python Programming
  • Ruby Programming
  • Visual Basics Programming
  •  
    Datamaskin >> Programmering >> C /C + + Programming >> Content
    Hvordan lage en Binary Tree in C
    Binære trær i C er en god måte å dynamisk organisere data for enkel søking . De krever imidlertid mye arbeid å vedlikeholde. Instruksjoner
    Opprett Binary Tre
    en

    Struktur din binære treet . Hver binærtreet trenger en struktur , selv om den bare har én variabel . Velg et navn , og deretter bruke typedef å lage det :

     typedef struct student_data STUDENT_DATA ; 
    2

    Definer strukturen. Inkluderer to pekere til samme struktur :

     struct student_data { int student_ID ; int student_grade ; STUDENT_DATA * igjen *, rett ;} ; 
    3

    tildele en peker til denne datastruktur , klargjør den til NULL , for å være treets hodet :

     STUDENT_DATA * studentene = NULL ; 
    Legg til Binary tre
    4

    Fordele to midlertidige pekere til data struktur:

     STUDENT_DATA * new_student , * cur_student ; 
    5

    bruk malloc () for å opprette et nytt element , alltid se etter en feil:

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

    fylle ut den nye elementets felt. Satt sin venstre og høyre felt til NULL :

     new_student - > student_ID = newID ; new_student - > student_size = newsize ; new_student - > venstre = NULL ; new_student - > høyre = NULL ; 
    7

    Tenk hodet variabel. Hvis hodet variabelen er NULL , er dette det første elementet lagt til treet , så satt hodet variabel til å peke på det , og du er ferdig :

     hvis { studentene = new_student ; return; } < ( studenter ! ) br > 8 

    start med toppen av treet :

     cur_student = studenter , mens ( cur_student ) { 
    9

    Håndter duplikatoppføringen hvis den nye verdien og nåværende verdi er lik :

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

    Deal med ulike verdier . Hvis den nye verdi er mindre enn den gjeldende verdi , går det nye element til venstre. Legg det umiddelbart hvis det er ingenting til venstre. Ellers travers venstre og bue:

     if ( newID student_ID ) { if ( cur_student - > venstre == NULL) { cur_student - > venstre = newstudent ; tilbake 1; } cur_student = cur_student - > venstre ; 
    11 < p> Gjør det samme på høyre side, ellers :
     } else { if ( cur_student - > høyre == NULL) { cur_student - > høyre = newstudent ; tilbake 1; } cur_student = cur_student - > høyre ;} } 

    Søk i Binary Tre
    12

    Opprett en midlertidig variabel som peker til data struktur:

     STUDENT_DATA * cur_student ; 
    13

    Sett midlertidig variabel til hodet variable :

     cur_student = students_head ; 
    14

    Loop gjennom elementene , sjekke for ønsket verdi :

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

    Branch til venstre eller høyre , og loop, hvis det ikke er funnet:

     if ( cur_student - > student_ID cur_student = cur_student - > høyre ;} else { cur_student = cur_student - > venstre ; } 
    16

    Se om loopen ender Hvis den gjør det , betyr det at du aldri funnet elementet : .

     } return 0 ; 
    Clean Up
    17

    deallocate det binære treet når programmet avsluttes, som ikke alle operativsystemer vil håndtere dette automatisk dette gjøres best ved hjelp av en rekursiv funksjon : .

     void deallocate_binary_tree ( STUDENT_DATA * tree) { 
    18

    Observer : Hvis det er ikke noe tre , det er ingenting å gjøre:

     hvis retur, 
    19

    deallocate venstre og høyre undertreene rekursivt ( tre! ) :

     deallocate_binary_tree ( tree- > venstre) ; deallocate_binary_tree (tree - > høyre) ; 
    20

    deallocate elementet , og du er ferdig :

     gratis ( tre) ;} 

    früher :

     Weiter:
      Relatert Artike
    ·Hvordan bruke Strpbrk funksjon i C + + 
    ·Hvordan finne ut hva C funksjoner er tilgjengelige i GC…
    ·Hvordan Link COBOL & C sammen på z /OS 
    ·Slik fjerner linjeskift i C 
    ·Hvordan fylle en FlexGrid kontroll med data 
    ·Hvordan implementere den Stack ADT 
    ·Hvordan legge til en startside til en nettleser i C # 
    ·Hvordan skriver jeg en temperatur konvertering program …
    ·Hvordan endre en Fill Factor 
    ·Hvordan oppdage en hendelse med WIA Vent 
      Anbefalte artikler
    ·Hvordan endre navn på kolonner på VBA & aksess 
    ·Hvordan bli kvitt Tall i COBOL 
    ·Slik konverterer en STD String til et heltall 
    ·Hvordan å lukke filer i C 
    ·Hvor å Sjekk sekvensielle tall i PHP 
    ·Forskjeller mellom Psuedocode og flytskjemaer 
    ·Hvordan Slett ProgressBar Folder Ved hjelp av VBScript 
    ·Hvordan finne Java JDK i Ubuntu 
    ·Slik leser du i Tab -separert tekst Python 
    ·Hvordan bygge en database for Web Site 
    Copyright ©  Datamaskin  http://www.datamaskin.biz/