Allouer deux pointeurs temporaires à la structure de données:
STUDENT_DATA new_student, cur_student-
Utilisez malloc () pour créer un nouvel élément, vérifiant toujours pour une erreur:
if ((new_student = malloc (sizeof (STUDENT_DATA))) == NULL) {abort () -}
Remplissez les champs du nouvel élément. Définissez ses champs gauche et droit à NULL:
new_student-gt; student_ID = newID-
new_student-gt; student_size = newsize-
new_student-gt; de gauche = null-
new_student-gt; droite = null-
Considérons la variable de la tête. Si la variable de la tête est NULL, ceci est le premier élément ajouté à l'arbre, donc définir la variable de la tête pour pointer vers elle, et vous avez terminé:
if (! étudiants) {étudiants = new_student- Retour-}
Commencez par le haut de l'arbre:
cur_student = étudiants-
while (cur_student) {
Manipulez l'entrée en double si la nouvelle valeur et la valeur actuelle sont égaux:
if (newID == cur_student-gt; student_ID) {abort () -}
Traiter avec des valeurs inégales. Si la nouvelle valeur est inférieure à la valeur de courant, le nouvel élément va à gauche. Ajouter immédiatement si il n'y a rien sur la gauche. Sinon, traverse à gauche et boucle:
if (newID lt; cur_student-gt; student_ID) {
if (cur_student-gt; gauche == NULL) {
cur_student-gt; = gauche newstudent-
retourner 1-
}
cur_student = cur_student-gt; gauche;
Faites la même chose sur la droite, sinon:
} Else {
if (cur_student-gt; droit == NULL) {
cur_student-gt; droite = newstudent-
retourner 1-
}
cur_student = cur_student-gt; droit;
}
}
Insérer un pointage variable temporaire à la structure de données:
STUDENT_DATA * cur_student-
Réglez votre variable temporaire à la variable de la tête:
cur_student = students_head-
Boucle à travers les éléments, la vérification de la valeur souhaitée:
while (cur_student) {
if (cur_student-gt; student_ID == 15) {return cur_student-gt; student_grade-}
Direction gauche ou à droite, et la boucle, si elle est introuvable:
if (cur_student-gt; student_ID lt; 15) {
cur_student = cur_student-gt; droit;
} Else {
cur_student = cur_student-gt; gauche;
}
Voir si la boucle se termine. Si elle le fait, cela signifie que vous jamais trouvé l'article:
}
retourner 0-