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;
} |
Partager