Dator
 |  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> C /C + + -programmering >> Content

    Hur man skapar ett binärt träd i C

    Binära träd i C är ett bra sätt att dynamiskt organisera data för enkel sökning . Däremot kräver de en hel del arbete att underhålla . Instruktioner
    Skapa Binary Tree
    1

    Struktur din binärt träd . Varje binärt träd behöver en struktur , även om den bara har en variabel . Välj ett namn och sedan använda typedef för att skapa det :

     typedef struct student_data STUDENT_DATA , Sida 2 

    Definiera strukturen . Inkludera två pekare till samma struktur :

     struct student_data { int student_ID , int student_grade ; STUDENT_DATA * vänster , * höger , }; 
    3

    tilldela en pekare till denna datastruktur , initierade den till NULL , vara trädets huvud :

     STUDENT_DATA * studenter = null; 
    Lägg till Binary Tree
    4

    Tilldela två tillfälliga pekare till datastruktur :

     STUDENT_DATA * new_student , * cur_student , 
    5

    Använd malloc ( ) för att skapa ett nytt element , alltid kontrollera för fel :

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

    fylla i den nya elementets fält . Ställ den vänstra och högra fälten till NULL :

     new_student - > student_ID = newid ; new_student - > student_size = newsize , new_student - > vänster = null; new_student - > höger = null; 
    7

    Tänk huvudet variabel. Om huvudet variabeln är NULL , är detta den första delen läggas till trädet , så satt huvudet variabeln att peka på det , och du är klar :

     om { studenter = new_student , avkastning; } < ( studenter ! ) br > 8 

    Börja längst upp i trädet :

     cur_student = studerande , medan ( cur_student ) { 
    9

    Hantera dubblerade posten om det nya värdet och aktuellt värde är lika :

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

    Deal med ojämlika värderingar . Om det nya värdet är mindre än det aktuella värdet , går det nya elementet till vänster . Lägg det omedelbart om det finns ingenting på vänster . Annars , travers vänster och loop :

     om ( newid student_ID ) {if ( cur_student - > vänster == null ) { cur_student - > vänster = newstudent , avkastning 1 ; } cur_student = cur_student - > vänster , 
    11

    Gör samma sak på höger , annars :

     } else {if ( cur_student - > höger == null ) { cur_student - > höger = newstudent , avkastning 1 ; } cur_student = cur_student - > höger ;} } 
    sökning på Binary Tree
    12

    Skapa en temporär variabel som pekar till den datastruktur :

     STUDENT_DATA * cur_student , 
    13

    Ställ din temporär variabel till huvudet variabel :

     cur_student = students_head , 
    14

    Loop genom elementen , kontroll av det önskade värdet :

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

    Branch vänster eller höger , och en slinga , om det inte finns :

     if ( cur_student - > student_ID cur_student = cur_student - > höger ;} else { cur_student = cur_student - > vänster ; } 
    16

    Se om slingan avslutas Om den gör det , betyder det att du aldrig hittade objektet : .

     } avkastning 0; 
    Clean Up
    17

    deallokera det binära trädet när programmet avslutas , eftersom inte alla operativsystem kommer att hantera detta automatiskt detta görs bäst med en rekursiv funktion : .

     void deallocate_binary_tree ( STUDENT_DATA * trädet ) { 
    18

    Observera : Om det är inte något träd , det finns inget att göra :

     om återvändande , 
    19

    deallokera vänster och höger underträden rekursivt ( träd ! ) :

     deallocate_binary_tree ( tree - > vänster ) , deallocate_binary_tree ( träd - > höger ) , 
    20

    deallokera elementet , och du är klar :

     gratis ( träd ) ;} Addera 

    Tidigare:

    nästa:
    relaterade artiklar
    ·Debugging i Visual C
    ·Hur man kompilerar C i Ubuntu
    ·Hur Länka Stream List Ingång på C + +
    ·Hur man sparar en vektor till en fil i C + +
    ·Hur man beräknar summan av udda tal i C + + språk
    ·Hur du returnerar en pekare till en Vector
    ·Hur Länk till en CPP -fil
    ·Hur man gör en App för iPhone i Visual C
    ·Vad är partiella Egenskaper
    ·Hur implementera flera Stacks
    Utvalda artiklarna
    ·Vad är fel Två i Redigera Rocket Java Compiler
    ·Lägga till en MSG Blockera
    ·Datatyper i VB6
    ·Hur man lägger in en inloggningssida på en webbplats
    ·Hur man skriver oktala tal i PHP
    ·Hur sortera en array Alfabetiskt i PHP
    ·Hur du formaterar decimaler i Java
    ·Hur man skriver in XML-fil med PHP
    ·Konvertera ett PLC - 5 till ControlLogix
    ·Varför webbdesigners använder Java Applets i webbsido…
    Copyright © Dator Kunskap http://www.dator.xyz