Exercice 114
Énoncé
On souhaite créer une classe liste permettant de manipuler des « listes chaînées »
dans lesquelles la nature de l’information associée à chaque « nœud » de la liste
n’est pas connue (par la classe). Une telle liste correspondra au schéma suivant :
La déclaration de la classe liste se présentera ainsi :
struct element // structure d'un élément de liste
{ element * suivant ; // pointeur sur l'élément suivant
void * contenu ; // pointeur sur un objet quelconque
} ;
class liste
{ element * debut ; // pointeur sur premier élément
// autres membres données éventuels
public :
liste () ; // constructeur
~liste () ; // destructeur
void ajoute (void *) ; // ajoute un élément en début de
liste
void * premier () ; // positionne sur premier élément
void * prochain () ; // positionne sur prochain élément
int fini () ;
} ;
La fonction ajoute devra ajouter, en début de liste, un élément pointant sur
l’information dont l’adresse est fournie en argument (void *). Pour « explorer » la
liste, on a prévu trois fonctions :
• premier, qui fournira l’adresse de l’information associée au premier nœud de la
liste et qui, en même temps, préparera le processus de parcours de la liste ;
• prochain, qui fournira l’adresse de l’information associée au « prochain nœud » ;
des appels successifs de prochain devront permettre de parcourir la liste (sans
269
Précédent

- 270/398

Suivant