// Programme qui affiche tous les mots de longueur PMAX sur // l'alaphabet {'a', 'b', c, ..., LMAX} en faisant un parcours d'arbre // "lexical". Version itérative. #define PMAX 5 #define LMAX 'z' // Implémentation minimale d'une pile de char char pile[PMAX] ; int sommet=-1 ; void empiler(char c) { pile[++sommet] = c ; } char depiler() { return pile[sommet--] ; } void vide_pile() { sommet=-1 ; } void photo_pile() { int i ; for (i=0 ; i<=sommet ; i++) printf("%c", pile[i]) ; printf("\n") ; } void parcours_iteratif() { int prof = 0 ; char val = '$' ; do { if (prof < PMAX) { // existe-fils empiler(val) ; prof++ ; val = 'a' ; } else { // on est sur une feuille if (prof != 0 && val==LMAX) photo_pile() ; while (prof != 0 && val==LMAX) { // on remonte tant // qu'il n'y a pas // de frère val = depiler() ; prof-- ; } if (val < LMAX) { // passage au frère val = val + 1 ; } } } while (prof != 0) ; } main() { parcours_iteratif() ; }