Premetto che:
1) questi header nell'insieme sono un lucas (ufficio complicazioni ...) vedi ridefinire i char *
2) le nomenclature sono strambe, per i typedef si utilizza generalmente il suffisso "_t",
mentre i nomi delle strutture (ma anche i nomi dei files)
dovrebbero rispecchiare quello che rappresentano, se utilizzi nomi cosi' generici "list" "tree" "info"
diventa dura seguire il filo (mentre poi le variabili sono specializzatissime tipo "croccantini")
3) ifndef,define si mette all'inizio del file prima degli include
il primo errore che mi salta all'occhio in list.h:
typedef S_List Type_Node_List;
mentre doveva essere
typedef struct S_List Type_Node_List;
Se, per iniziare, metti tutto in un unico file .h e dai alle strutture e ai typedef nomi più umani e rappresentativi
diventa molto più facile debuggare, soprattutto per chi ti deve aiutare.
Ciao.