#include #include #define PLUS 0 #define TIMES 1 #define CONST 2 #define VAR 3 struct polynomial { int type; // PLUS, TIMES, CONST ou VAR int value; // Si CONST, la valeur de l'entier. Si VAR, le numéro de la variable struct polynomial *p1, *p2; // Si PLUS ou TIMES, les arguments }; typedef struct polynomial polynomial; // Évalue un polynôme. v[i] correspond à la valeur de la variable i int eval(polynomial *p, int v[]) { switch (p->type) { case CONST: return p->value; case VAR: return v[p->value]; case PLUS: return eval(p->p1, v)+eval(p->p2, v); case TIMES: return eval(p->p1, v)*eval(p->p2, v); default: return 0; } } polynomial *create_node(int type, int value, polynomial *p1, polynomial *p2) { polynomial *p = (polynomial *) malloc(sizeof(polynomial)); p->type = type; p->value = value; p->p1 = p1; p->p2 = p2; } int main() { polynomial *p = create_node(PLUS, 0, create_node(VAR, 0, NULL, NULL), create_node(VAR, 1, NULL, NULL)); return 0; }