1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| typedef struct file
{
struct file *suivant;
char mot[10];
int len;
} file;
file *ptrfin, *ptrcur;
void deletepile(void)
{
delete ptrcur;
}
void initfile (void)
{
ptrcur = new(file);
ptrfin = ptrcur;
}
void enfiler (char *mot, int len)
{
strcpy(ptrcur->mot, mot);
ptrcur->len = len;
ptrcur->suivant = new(file);
ptrcur = ptrcur->suivant;
}
int filevide (void)
{
return ptrfin == ptrcur;
}
int defile(char *mot, int *len)
{
if (filevide())
return 0;
strcpy(mot, ptrfin->mot);
*len = ptrfin->len;
file *tmp = ptrfin;
ptrfin = ptrfin -> suivant;
delete tmp;
return 1;
}
int main(void)
{
char tmp[50];
char mot[50];
int len;
initfile();
enfiler("", 3);
while (filevide() == 0)
{
if (defile(mot, &len) == 0)
{
puts("Pb");
return(0);
}
for(int i = 0; i < 26; i++)
{
printf("%s%c ", mot, 'a'+i);
if (len > 1)
{
sprintf(tmp, "%s%c", mot, 'a'+i);
enfiler(tmp, len - 1);
}
}
}
deletepile();
return 0;
} |
Partager