Ce document a été produit par HEVEA.
Votre browser peut avoir a être configuré pour afficher correctement
certains symboles.
Reportez-vous à la documentation d'HEVEA.
Licence d'informatique
TD de programmation en C : le dictionnaire
Nouvelle révision, janvier 2001
Ce document est disponible sous forme d'un fichier PostScript compressé.
On se propose de gérer un dictionnaire de mots (un mot est une liste
de lettres) avec la structure de données suivante : un noeud du
dictionnaire est composé d'une lettre et de deux pointeurs ; un
pointeur vers un fils détenant la lettre suivante du mot et un
pointeur vers un frère codant un mot qui a la même racine (les mêmes
premières lettres que le mot). La liste des frères est ordonnée
suivant l'ordre alphabétique (en particulier, on utilise le caractère
#
comme marqueur de fin de mot ; ce marqueur est inférieur à la
lettre A).
typedef struct ELEM {
char lettre ;
struct ELEM *frere, *fils ;
} elem_t, *dico_t ;
Par exemple, le dictionnaire constitué des mots ARBRE, BAC, BAL,
BOL, BON et BONNE est représenté par la structure
Écrire les fonctions suivantes :
-
int nbnoeuds (dico_t d) ;
retourne le nombre de noeuds présents dans un dictionnaire.
- int nbmots (dico_t d) ;
retourne le nombre de mots présents dans un dictionnaire.
- int present (dico_t d, char *mot) ;
retourne
VRAI
si le mot passé en paramètre est présent dans le
dictionnaire.
- dico_t insert (dico_t d, char *mot) ;
insère un mot dans le dictionaire.
- void print (dico_t d) ;
affiche sur la sortie standard tous les mots du dictionnaire (dans
l'ordre alphabétique).
- dico_t delete (dico_t d, char *mot) ;
supprime un mot du dictionnaire.
- On se propose maintenant de jouer au mot le plus long
à l'aide d'une telle structure. Écrire la fonction char
*lepluslong (dico_t d, char *tirage) ; qui retourne le mot le plus
long du dictionnaire pour un tirage de lettres donné.
- int maxlong (dico_t d) ;
retourne la longueur du plus long mot du dictionnaire.
- void ecrireWildCard (dico_t d, char *format) ; produit
sur stdout tous les mots du dictionnaire qui verifient le
format passé en paramètre. Ce format est un mot qui peut comporter
un (ou plus) caractère
'?'
. Ce caractère remplace une et
une seule lettre.
Ce document a été traduit de LATEX par
HEVEA.