| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 
 |  
#include <stdio.h>
#include <stdlib.h>
 
typedef struct element element;
 
struct element
{
    int val;
    element* p_suivant;
};
 
element* ajouter_en_tete (element* p_liste, int valeur)
{
    /* Creation de l'element a ajouter */
    element* p_nouvel_element = malloc (sizeof (element));
 
    /* On lui assigne sa valeur */
    p_nouvel_element->val = valeur;
 
    /* L'element est a ajouter au debut, il pointe sur p_liste */
    p_nouvel_element->p_suivant = p_liste;
 
    /* On renvoie l'adresse de la nouvelle liste */
    return p_nouvel_element;
}
 
element* ajouter_en_fin (element* p_liste, int valeur)
{
    /* Creation de l'element a ajouter */
    element* p_nouvel_element = malloc (sizeof (element));
 
    /* On lui assigne sa valeur */
    p_nouvel_element->val = valeur;
 
    /* L'element est a la fin, il recoit NULL */
    p_nouvel_element->p_suivant = NULL;
 
    /* On place l'element dans la liste */
    if (p_liste == NULL)
    {
        /* Si la liste est vide on renvoie l'adresse de l'element cree */
        return p_nouvel_element;
    }
    else
    {
        /* Sinon on parcourt jusqu'a la fin la liste puis on ajoute le nouvel element */
        element* p_temp;
 
        p_temp = p_liste;
        while (p_temp->p_suivant != NULL)
            {
                p_temp = p_temp->p_suivant;
            }
 
        p_temp->p_suivant = p_nouvel_element;
 
        return p_liste;
    }
}
 
void afficher (element* p_liste)
{
    element* p_temp;
    int i;
 
    p_temp = p_liste;
 
    i = 0;
    while (p_temp != NULL)
    {
        printf ("La valeur de l'element %d est : %d\n", i + 1, p_temp->val);
        p_temp = p_temp->p_suivant;
        i++;
    }
}
 
int main (void)
{
    int nombre_elements;
    int i;
    int rep;
    int valeur;
 
    /* Creation de la liste */
    element* p_liste = NULL;
 
    printf ("Entrez le nombre d'elements de la liste : ");
    scanf ("%d", &nombre_elements);
 
    /* Saisie des elements */
    printf ("\n\n\t\t\tVoulez vous ajouter les elements\n");
    printf ("\t\t\t1 ------> a la fin de la chaine\n");
    printf ("\t\t\t2 ------> au debut de la chaine\n\t\t\t");
    scanf ("%d", &rep);
 
    printf ("\n\n");
    for (i = 0; i < nombre_elements; i++)
    {
        printf ("Entrez la valeur de l'element %d : ", i + 1);
        scanf ("%d", &valeur);
 
        if (rep == 1)
        {
            p_liste = ajouter_en_fin (p_liste, valeur);
        }
        else if (rep == 2)
        {
            p_liste = ajouter_en_tete (p_liste, valeur);
        }
    }
 
    printf ("\n\n");
    afficher (p_liste);
 
    return 0;
} | 
Partager