arbres binaires en C sont un bon moyen d'organiser dynamiquement des données pour faciliter la recherche . Toutefois, ils exigent beaucoup de travail à entretenir. Instructions Créer l' Binary Tree 1 Structure de votre arbre binaire . Chaque arbre binaire aura besoin d'une structure , même si elle ne dispose que d' une seule variable . Choisir un nom , puis utiliser typedef pour le créer : typedef struct student_data STUDENT_DATA ; Page 2 définir la structure . Inclure deux pointeurs vers la même structure: struct {int student_data student_id ; int student_grade ; STUDENT_DATA * gauche , droite * ; }; 3 allouer un pointeur sur cette structure de données , l'initialisation à NULL , pour être la tête de l' arbre : STUDENT_DATA * élèves = NULL; Ajouter à la Binary Tree 4 Allouer deux pointeurs temporaires à la structure de données : STUDENT_DATA * new_student , * cur_student ; 5 utilisation malloc () pour créer un nouvel élément , toujours vérifier une erreur : if (( new_student = malloc ( sizeof ( STUDENT_DATA ))) == NULL ) { abort () ; } 6 Remplir les champs du nouvel élément . Régler ses champs gauche et droit de NULL : new_student -> student_id = newID ; new_student -> student_size = NewSize ; new_student -> gauche = NULL; new_student -> droite = NULL; 7 Envisager la tête variable. Si la variable de tête est NULL, c'est le premier élément ajouté à l'arbre , afin de définir la charge variable pour pointer vers elle , et vous avez terminé : si { élèves = new_student , de retour; } < (étudiants !) br> 8 départ au sommet de l'arbre : cur_student = étudiants ; while ( cur_student ) { 9 Poignée l'entrée en double si la nouvelle valeur et la valeur actuelle sont égaux : if ( newID == cur_student -> student_id ) { abort () ; } 10 Traiter les valeurs inégales . Si la nouvelle valeur est inférieure à la valeur de courant , le nouvel élément passe à gauche. Ajoutez-le immédiatement s'il n'y a rien sur la gauche. Sinon, traverser à gauche et boucle : if ( newID student_id ) {if ( cur_student -> gauche == null) { cur_student -> gauche = newstudent ; return 1; } cur_student = cur_student -> gauche ; 11 < p> Faites la même chose sur la droite, sinon : } else {if ( cur_student -> droite == null) { cur_student -> droite = newstudent ; return 1; } cur_student = cur_student -> droite ;}} Recherche du Binary Tree 12 Créer une variable temporaire pointant vers la structure de données : STUDENT_DATA * cur_student ; 13 définir la variable temporaire à la tête Variable: cur_student = students_head ; 14 boucle à travers les éléments , la vérification de la valeur souhaitée : tout ( cur_student ) {if ( cur_student -> student_id == 15) {return cur_student -> student_grade ; } 15 Direction à gauche ou à droite, et la boucle , si elle n'est pas trouvée : if ( cur_student -> student_id cur_student = cur_student -> droite ; } else { cur_student = cur_student -> gauche ;} 16 Voir si la boucle se termine si c'est le cas, cela signifie que vous n'avez jamais trouvé l'article : . } return 0; Clean Up 17 Libère l'arbre binaire lorsque votre programme se termine, comme tous les systèmes d'exploitation ne se chargera automatiquement cette Ceci mieux est d'utiliser une fonction récursive : . vide deallocate_binary_tree ( STUDENT_DATA * arbre) { 18 Observer : Si n'est pas n'importe quel arbre , il n'y a rien à faire : si le retour ; 19 DEALLOCATE les arbres gauche et droit de façon récursive ( arbre! ) : deallocate_binary_tree (arbre -> gauche) ; deallocate_binary_tree (arbre -> droite) ; 20 DEALLOCATE l'élément, et vous avez terminé : gratuit (arbre) ; }
|