Voilà je suis entrain d'apprendre les listes chainées en algorithmique et je fait leur implémentation en C, et là survient un doute, est ce que je présente bien mon programme en c.

voilà mon code, ce programme est censé me permettre de creer une liste et de l'afficher. J'ai vu que quand on a une variable de type pointeur il faut la declarer avec un identificateur du genre p_quelquechose, mais je me demande si la manière dont j'ai compris cette règle est la bonne.

ausi j'aurais aimé savoir si la façon de nommer mes fonctions est correcte


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
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;
}

Merci