Présenter clairement le code
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:
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