Loading lang_cpp_tr_05...

enib_small.png LANG-CPP Tr_05 — Entraînement sur le chapitre 05_Alloc

Créez sur votre poste de travail un répertoire de votre choix dans lequel vous placerez le fichier GNUmakefile qui servira à la fabrication de votre réalisation.
N'hésitez pas à consulter la documentation de référence de C++.
{1} Réalisation d'un arbre binaire
Comme illustration du recours à l'allocation dynamique de données individuelles, nous réaliserons un arbre binaire.
Il s'agit d'un assemblage de nœuds : chacun d'eux mémorise une valeur et peut posséder jusqu'à deux nœuds enfants usuellement désignés par les adjectifs “gauche” et “droit”.
Chacun des nœuds gauche et droit est facultatif.

Un tel arbre sert généralement à classer des données selon une succession de critères binaires.
Tous les nœuds enfants à gauche d'un nœud particulier mémorisent alors des valeurs qui ont une certaine caractéristique, alors que ceux qui sont à sa droite ont la caractéristique complémentaire.
Le parcours d'un arbre binaire consiste à partir du nœud racine et à se diriger vers l'enfant gauche ou droit, selon la caractéristique recherchée, jusqu'à rencontrer (ou non) un nœud mémorisant une valeur ayant cette caractéristique.
Si l'organisation des nœuds est réalisée de manière rigoureuse, une telle recherche peut être très efficace (il n'y a pas besoin de visiter tous les éléments).
{1.1} Réaliser un type récursif
{1.2} Réaliser explicitement la recopie
{2} Pour aller plus loin...
L'essentiel de la difficulté tient dorénavant dans l'algorithmique.
En effet la maîtrise de la syntaxe, des règles d'écriture et des subtilités d'un langage informatique n'a de sens que si nous envisageons d'écrire des programmes qui résolvent des problèmes.
Si nous ne pouvons pas aller jusque là, il faudra alors probablement confier ce travail à un autre/vrai ingénieur...
{2.1} Réaliser des algorithmes de parcours
{2.2} Rechercher des informations
{2.3} Trier avec un arbre

Code source résultant