qu’il soit nécessaire d’appeler une autre fonction) ;
• fini, qui permettra de savoir si la fin de liste est atteinte ou non.
1. Compléter la déclaration précédente de la classe liste et en fournir la définition de
manière qu’elle fonctionne comme demandé.
2. Soit la classe point suivante :
class point
{ int x, y ;
public :
point (int abs=0, int ord=0) { x=abs ; y=ord ; }
void affiche () { cout << "Coordonnées : " << x << " " << y << "\n" ; }
} ;
Créer une classe liste_points, dérivée à la fois de liste et de point, pour qu’elle puisse
permettre de manipuler des listes chaînées de points, c’est-à-dire des listes
comparables à celles présentées ci-dessus, et dans lesquelles l’information associée
est de type point. On devra pouvoir, notamment :
• ajouter un point en début d’une telle liste ;
• disposer d’une fonction membre affiche affichant les informations associées à
chacun des points de la liste de points.
3. Écrire un petit programme d’essai.
1. Manifestement, les fonctions premier et prochain nécessitent un « pointeur sur un
élément courant ». Il sera membre donnée de la classe liste. Nous conviendrons
(classiquement) que la fin de liste est matérialisée par un nœud comportant un
pointeur « nul ». La classe liste devra disposer d’un constructeur dont le rôle se
limitera à l’initialiser à une « liste vide », ce qui s’obtiendra simplement en plaçant
un pointeur nul comme adresse de début de liste (cette façon de procéder simplifie
grandement l’algorithme d’ajout d’un élément en début de liste, puisqu’elle évite
d’avoir à distinguer des autres le cas de la liste vide).
Comme un objet de type liste est amené à créer différents emplacements
dynamiques, il est nécessaire de prévoir la libération de ces emplacements lorsque
l’objet est détruit. Il faudra donc prévoir un destructeur, chargé de détruire les
différents nœuds de la liste. À ce propos, notez qu’il n’est pas possible ici de
demander au destructeur de détruire également les informations associées ; en effet,
ce n’est pas l’objet de type liste qui a alloué ces emplacements : ils sont sous la
responsabilité de l’utilisateur de la classe liste.
Voici ce que pourrait être notre classe liste complète :
270
Précédent

- 271/398

Suivant