Bonjour ici,
alors voilà j'essaye de mettre au point une fonction pour additionner des polynômes stockés sous forme de listes simplement chainées (non triées).
J'ai sorti une fonction qui me parait convenable (enfin qui devrait marcher) avec une complexité dégueulasse je vous l'avoue. Mais malheureusement elle ne fonctionne pas.
Structure utilisée :
Code C/C++ :
typedef struct lPolyDev
{
int degre;
int coef;
struct lPolyDev * succ;
}lPolyDev;
typedef lPolyDev * lpd;
Fonction de l'addition :
Code C/C++ :
lpd addition(lpd liste1, lpd liste2)
{
if((!liste1) || (!liste2)) exit(1);
int trouve;
lpd lpdAdd, tete;
lpdAdd = copie(liste1);
tete = lpdAdd;
while(liste2 != NULL)
{
trouve=0;
while((lpdAdd != NULL) && (trouve == 0))
{
if(lpdAdd -> degre == liste2 -> degre)
{
lpdAdd -> coef = lpdAdd -> coef + liste2 -> coef;
trouve=1;
}
lpdAdd = lpdAdd -> succ;
}
if(trouve==0) lpdAdd = ajoutTete(lpdAdd, liste2 -> coef, liste2 -> degre);
liste2 = liste2 -> succ;
}
return lpdAdd;
}
Sachant que le fonction copie() se contente de dupliquer une liste et que l'ajoutTete() comme vous pouvez vous en douter ajoute un élément en tête de liste. (fonctions qui fonctionnent sans problèmes).
Si vous avez une idée...
En vous remerciant d'avance !