Liste chainé bugé
Résolu
armasousou
Messages postés
1351
Statut
Membre
-
armasousou Messages postés 1351 Statut Membre -
armasousou Messages postés 1351 Statut Membre -
Bonjour à tous,
Je programmais la fonction d'ackerman en algo pour le "fun" et mon programme se plante je comprend pas pourquoi ><
La fonction d'ackerman est défini par A(m, n)
Si m = 0 => A(m,n) = n+1
Si n = 0 => A(m,n) = A(m-1, 1)
Sinon A(m,n) = A(m-1, A(m, n-1))
J'ai pris le programme par une liste chainé avec deux int, un element suivant et un precedant.
Voila mon programme :
Je programmais la fonction d'ackerman en algo pour le "fun" et mon programme se plante je comprend pas pourquoi ><
La fonction d'ackerman est défini par A(m, n)
Si m = 0 => A(m,n) = n+1
Si n = 0 => A(m,n) = A(m-1, 1)
Sinon A(m,n) = A(m-1, A(m, n-1))
J'ai pris le programme par une liste chainé avec deux int, un element suivant et un precedant.
Voila mon programme :
#include <stdio.h>
#include <stdlib.h>
typedef struct sA{
int m;
int n;
struct sA* next;
struct sA* prev;
}Ack;
Ack* allouer(int, int);
void calc(Ack*);
void aff(Ack);
int main(int argc, char **argv)
{
int m, n, i, j;
Ack* A;
//~ printf("Donne ton m et n\n");
//~ scanf("%d", &m);
//~ scanf("%d", &n);
m=2;
n=1;
A = allouer(m, n);
while( A->m != 0 )
{
Ack* tmp;
aff(*A);
tmp = A;
while(tmp->next != NULL)
{
tmp = tmp->next;
}
calc(tmp);
}
printf("\n");
printf("Ton Ackerman (%d,%d) est égal à %d :)\n", m, n, A->n);
return 0;
}
Ack* allouer(int m, int n)
{
Ack* pA;
pA = malloc(sizeof(Ack));
pA->m=m;
pA->n=n;
pA->next = NULL;
pA->prev = NULL;
return pA;
}
void calc(Ack* pA)
{
int m = pA->m;
int n = pA->n;
if( n == 0 )
{
pA->m = m -1;
pA->n = 1;
}
else if( m == 0 )
{
pA->prev->n = n+1;
pA->prev->next = NULL;
free(pA);
}
else
{
pA->next = allouer(m, n-1);
pA->next->prev = pA;
pA->m =m-1;
}
}
void aff(Ack A)
{
int j, i=0;
while(A.next != NULL)
{
printf("A(%d, ", A.m);
i++;
A= *(A.next);
}
printf("A(%d, %d", A.m, A.n);
i++;
for(j=0 ; j<i ; j++)
{
printf(")");
}
printf("\n");
}
A voir également:
- Liste chainé bugé
- Liste déroulante excel - Guide
- Liste code ascii - Guide
- Chaine tnt gratuite sur mobile - Guide
- Liste déroulante en cascade - Guide
- Chaine radio - Télécharger - Médias et Actualité