Correction de l'interrogation 6 de cours

Question 1 : 
- strlen (longueur d'une chaîne de caractères),
- strcmp (comparaison de chaînes de caractères, attention à ne pas utiliser ==)
- strcat (concaténation de chaînes de caractères)
- strcpy (copie d'une chaîne de caractères)

Question 2 :

// Une structure de liste simplement chaînée avec deux entiers par maillon
typedef struct maillon_ {
    int v1;
    int v2;
    struct maillon_* suivant;
} maillon;

Question 3 :

// Allocation d'un maillon sur le tas et initialisation
maillon* nouveau_maillon(int elem) {
    // On alloue un nouveau maillon sur le tas
    maillon* m = malloc(sizeof(maillon));
    // On initialise chacun de ses champs
    m->valeur = elem;
    m->suivant = NULL;

    return m;
}

// Ajout d'un maillon en début de liste
maillon* append(maillon* l, int elem) {
    // On alloue un nouveau maillon sur le tas avec la bonne valeur
    maillon* m = nouveau_maillon(elem);
    m->suivant = l;
    return m;
}

// Affichage d'une liste
void affiche_liste(maillon* l) {
    printf("<");
    while (l != NULL) {
        printf(" %d ", l->valeur);
        l = l->suivant;
    }
    printf(">\n");
}

// Fonction de libération d'une liste simplement chaînée
void libere_liste(maillon* l) {
    maillon* p;
    while (l != NULL) {
        p = l->suivant;
        free(l);
        l = p;
    }
}

// Combien de maillons possède une liste ?
int longueur(maillon* l) {
    int longueur = 0;
    while (l != NULL) {
        longueur++;
        l = l->suivant;
    }
    return longueur;
}