#include #include struct m_l_c_i { int valeur; struct m_l_c_i *suivant; }; typedef struct m_l_c_i milc; struct l_c_i { milc *debut; }; typedef struct l_c_i ilc; ilc creer_ilc() { return (ilc){NULL}; } milc *tete_ilc(ilc l) { return l.debut; } milc *suivant_ilc(milc m) { return m.suivant; } void inserer_ilc(ilc *l, milc *m, int x) { milc *parent = l->debut; while (x > 0) { parent = parent->suivant; } m->suivant = parent->suivant; parent->suivant = m; } void retirer_ilc(ilc *l, milc *m) { if (l->debut == m) { l->debut = m->suivant; } milc *parent = l->debut; while (parent->suivant != m) { parent = parent->suivant; } parent->suivant = m->suivant; free(m); } int acceder_ilc(milc m) { return m.valeur; } void modifier_ilc(milc *m, int x) { m->valeur = x; } void inserer_tete_ilc(ilc *l, int x) { milc* m = malloc(sizeof(milc)); m->valeur = x; m->suivant = l->debut; l->debut = m; } int retirer_tete_ilc(ilc *l) { milc* m = l->debut; l->debut = m->suivant; int x = m->valeur; free(m); return x; } void inserer_fond_ilc(ilc *l, int x) { if (l->debut == NULL) { inserer_tete_ilc(l, x); } else { milc* parent = l->debut; while (parent->suivant != NULL) { parent = parent->suivant; } milc* m = malloc(sizeof(milc)); m->valeur = x; m->suivant = NULL; parent->suivant = m; } } int retirer_fond_ilc(ilc *l) { milc* m; if (l->debut->suivant == NULL) { m = l->debut; l->debut = NULL; } else { milc* parent = l->debut; while (parent->suivant->suivant != NULL) { parent = parent->suivant; } m = parent->suivant; parent->suivant = NULL; } int x = m->valeur; free(m); return x; }