Exercice 78
Énoncé
Modifier l’implémentation de la classe précédente (avec son constructeur par
recopie) de façon que l’ensemble d’entiers soit maintenant représenté par une liste
chaînée (chaque entier est rangé dans une structure comportant un champ destiné à
contenir un nombre et un champ destiné à contenir un pointeur sur la structure
suivante). L’interface de la classe (la partie publique de sa déclaration) devra rester
inchangée, ce qui signifie qu’un client de la classe continuera à l’employer de la
même façon.
Comme nous le suggère l’énoncé, nous allons donc définir une structure que nous
nommerons élément :
struct noeud
{ int valeur ; // valeur d'un élément de l'ensemble
noeud * suivant ; // pointeur sur le nœud suivant de la liste
} ;
Notre structure noeud peut être définie indifféremment dans la déclaration de la classe
set_ int ou en dehors.
En ce qui concerne les membres donnée privés de la classe, nous ne conserverons que
nelem qui, bien que non indispensable, nous évitera de parcourir toute la liste pour
déterminer le cardinal de notre ensemble.
En revanche, nous y introduirons un pointeur nommé debut, destiné à contenir l’adresse
du premier élément de la liste, s’il existe (au départ, il sera initialisé à NULL).
En ce qui concerne le constructeur de set_int, nous lui conserverons son argument (de
type int), bien qu’ici il n’ait plus aucun intérêt, et cela dans le but de ne pas modifier
l’interface de notre classe (comme le demandait l’énoncé).
Voici donc la nouvelle déclaration de notre classe :
/* fichier SETINT3.H */
/* déclaration de la classe set_int */
struct noeud
{
int valeur ; // valeur d'un élément de l'ensemble
noeud * suivant ; // pointeur sur le nœud suivant de la liste
} ;
class set_int
177
Énoncé
Modifier l’implémentation de la classe précédente (avec son constructeur par
recopie) de façon que l’ensemble d’entiers soit maintenant représenté par une liste
chaînée (chaque entier est rangé dans une structure comportant un champ destiné à
contenir un nombre et un champ destiné à contenir un pointeur sur la structure
suivante). L’interface de la classe (la partie publique de sa déclaration) devra rester
inchangée, ce qui signifie qu’un client de la classe continuera à l’employer de la
même façon.
Comme nous le suggère l’énoncé, nous allons donc définir une structure que nous
nommerons élément :
struct noeud
{ int valeur ; // valeur d'un élément de l'ensemble
noeud * suivant ; // pointeur sur le nœud suivant de la liste
} ;
Notre structure noeud peut être définie indifféremment dans la déclaration de la classe
set_ int ou en dehors.
En ce qui concerne les membres donnée privés de la classe, nous ne conserverons que
nelem qui, bien que non indispensable, nous évitera de parcourir toute la liste pour
déterminer le cardinal de notre ensemble.
En revanche, nous y introduirons un pointeur nommé debut, destiné à contenir l’adresse
du premier élément de la liste, s’il existe (au départ, il sera initialisé à NULL).
En ce qui concerne le constructeur de set_int, nous lui conserverons son argument (de
type int), bien qu’ici il n’ait plus aucun intérêt, et cela dans le but de ne pas modifier
l’interface de notre classe (comme le demandait l’énoncé).
Voici donc la nouvelle déclaration de notre classe :
/* fichier SETINT3.H */
/* déclaration de la classe set_int */
struct noeud
{
int valeur ; // valeur d'un élément de l'ensemble
noeud * suivant ; // pointeur sur le nœud suivant de la liste
} ;
class set_int
177
