#include "declarations.h"

fonction_creation_cellule (liste *nombre, int chiffre, char T_Q)
{

/// ////////////////////////////////////////     CREATION CELLULE    ///////////////////////////////////////////
	str_chiffre *nouv_chiffre;                                                   //déclaration d'une nouvelle cellule
	nouv_chiffre = malloc(1*sizeof(str_chiffre));		                        //création du nouveau monome que l'on saisit

/// ////////////////////////////////////////     INBSERTION VALEUR DU CHIFFRE ///////////////////////////////////////////
	nouv_chiffre->chiffre = chiffre;

/// ////////////////////////////////////////    CHAINAGE AU NOMBRE   ///////////////////////////////////////////
    if (nombre->tete == NULL)                                         // CAS DE LA LISTE VIDE
    {
        nombre->tete = nouv_chiffre;                                          //l'ancienne tete est maintenant la nouvelle cellule
        nouv_chiffre->suiv = NULL;                                              //la cellule suivant la nouvelle est la fin de liste : NULL
        nouv_chiffre->prec = NULL;                                              //la cellule precedante de la nouvelle est avant le debut de liste : NULL
        nombre->queue = nouv_chiffre;                                         //l'ancienne queue est maintenant la nouvelle cellule
    }
    else                                                                //CAS OU UNE CELLULE AU MOINS EXISTE
    {
        if (T_Q=='Q')                         //insertion en queue
        {
            nombre->queue->suiv = nouv_chiffre;                                   //la fin de chaine "nombre" ne pointe plus sur NULL mais sur la nouvelle cellule
            nouv_chiffre->suiv = NULL;                                              //suivant la nouvelle=NULL car la nouvelle est en queue de liste
            nouv_chiffre->prec = nombre->queue;                                              //la cellule precedante de la nouvelle était avant le debut de liste : NULL
            nombre->queue = nouv_chiffre;                                         //l'ancienne queue est maintenant la nouvelle cellule
        }
        if (T_Q=='T')                         //insertion en tete
        {
            nombre->tete->prec = nouv_chiffre;                                   //la tete de chaine "nombre" ne pointe plus sur NULL mais sur la nouvelle cellule
            nouv_chiffre->prec = NULL;                                              //precedant la nouvelle=NULL car la nouvelle est en tete de liste
            nouv_chiffre->suiv = nombre->tete;                                 //la cellule suivant la nouvelle était avant la tete de liste : NULL
            nombre->tete = nouv_chiffre;                                         //l'ancienne tete est maintenant la nouvelle cellule
        }
    }

        nombre->longueur ++;                                          //on incrémente la longueur de la liste

    return nombre;                                                   //on retourne la structure nombre contenant les nouveaux parametres :
}                                                                   //tete, queue et longueur (modifiés ou non)

