#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>
#include <string.h>

struct maillon{
  int n; // donne la capacité de mot
  char *mot;
  struct maillon *suivant;
};
typedef struct maillon *liste;


//-------------------------------- Fonction de création de liste

// hypothèse : s est de longueur < n
// crée un maillon contenant un char* de n cases contenant mot, 
// de suivant l et renvoie l'adresse de ce maillon
liste ajoute_maillon(char* mot, int n, liste l){
  int lg_mot = (int) strlen(mot);
  assert(lg_mot < n);
  
  struct maillon* res = malloc(sizeof(struct maillon));
  res->n = n;
  res -> mot = malloc(n*sizeof(char));
  strcpy (res->mot, mot);
  res -> suivant = l;
  
  return res;
}



//-------------------------------- Question 1
void affiche_simple (liste l){
  // à compléter
}


//-------------------------------- Question 2
void affiche_reverse (liste l){
 // à compléter
}


//-------------------------------- Question 3
void ajoute_char (liste l, char c){
  // à compléter
}


//-------------------------------- Question 5

bool est_sous_mot(char* u, int nu, char* v, int nv){
  // à compléter
}

int main(){
  liste l = ajoute_maillon ("tutu",10, NULL);
  l = ajoute_maillon ("toto",10, l);
  l = ajoute_maillon ("titi",10, l);
  l = ajoute_maillon ("tata",10, l);
  
  // à compléter
  
  return 0;
}
