From e94249258367f9f3b200185d3d3e865cacecf722 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Sat, 18 Dec 2021 13:51:28 +0100 Subject: [PATCH] Declare basic function for the chained list --- liste.c | 37 +++++++++++++++++++++++++++++++++++++ liste.h | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 liste.c create mode 100644 liste.h diff --git a/liste.c b/liste.c new file mode 100644 index 0000000..c23fefc --- /dev/null +++ b/liste.c @@ -0,0 +1,37 @@ +#include "liste.h" + +void ajouter(Liste *liste, char lettre) { + +} + +Cellule *allouerCellule(char lettre) { + Cellule *nouvelleCellule; + if ((nouvelleCellule = (Cellule*)malloc(sizeof(Cellule))) == NULL) { + printf("Impossible d'allouer de la mémoire supplémentaire\n"); + exit(1); + } + + nouvelleCellule->lettre = lettre; + nouvelleCellule->frequence = 1; // fréquence par défaut + nouvelleCellule->gauche = NULL; + nouvelleCellule->droite = NULL; + nouvelleCellule->suivant = NULL; + + return nouvelleCellule; +} + +void afficherListe(Liste liste, FILE *fichier) { + +} + +void viderListe(Liste liste) { + +} + +void trierListe(Liste *liste) { + +} + +void ajouterEnTete(Liste *liste, Cellule *cellule) { + +} diff --git a/liste.h b/liste.h new file mode 100644 index 0000000..3cdfdb9 --- /dev/null +++ b/liste.h @@ -0,0 +1,41 @@ +#ifndef _LISTE_HUFFMAN_H_ +#define _LISTE_HUFFMAN_H_ 1 + +#include +#include + +// Définition d'une Celulle/Noeud +typedef struct cel { + char lettre; // lettre + int frequence; // fréquence dans laquelle la lettre apparaît dans le texte + struct cel *gauche; // utile en tant que noeud + struct cel *droite; // utile en tant que noeud + struct cel *suivant; // utile en tant que cellule +} Cellule; + +// Définition d'une Liste chainée +typedef Cellule *Liste; + +/* + Ajoute une lettre (qui sera automatiquement transformé + en cellule si elle n'existe pas déjà) dans la liste, avec + sa bonne occurence (la met à jour si la lettre existait déjà) +*/ +void ajouter(Liste *liste, char lettre); + +// Alloue une cellule pour la liste +Cellule *allouerCellule(char lettre); + +// Affiche la liste +void afficherListe(Liste liste, FILE *fichier); + +// Vide la liste +void viderListe(Liste liste); + +// Trie la liste en fonction des occurences +void trierListe(Liste *liste); + +// Ajoute une cellule en tête de liste +void ajouterEnTete(Liste *liste, Cellule *cellule); + +#endif