/* Solution proposee par Ning Hu, legerement modifiee */

//structs
//-----------------------------
//un structure pour la polynome
//-----------------------------
struct poly
{
  int   degree;
  float*  coefficient;
};
typedef struct poly poly;

//---------
//un node
//---------
struct node
{
  poly* poly;
  struct node *next; 
};
typedef struct node node;

//functions
//----------
//prototypes
//----------
poly*  cree(void);                        //cree un polynome
void   montre(poly*);                     //mettre un polynome a l'ecran
void   montre_plusiers(node*);            //mettre toute une liste de polynomes a l'ecran
poly*  choisir_poly(node*);               //choisir un polynome de la liste
node*  ajouter_a_list(node*,poly*);       //ajouter un polynome a la liste
poly*  calculer(poly*);                   //calculer le degree du polynome
poly*  ajouter(poly*,poly*);              //ajouter deux polynomes ensemble
poly*  multiplier(poly*,poly*);           //multiplier deux polynome ensemble
poly*  multiplier_const(poly*,double);    //multiplier un polynome par un nombre reel
double evaluer_a_horner(poly *p,double n);//evaluer un polynome a la puissance n
poly*  copy(poly*);                       //fait un copie d'un polynome
void   destroy(poly*);                    //detruire un polynome