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
|
#include <stdio.h>
#include <math.h>
typedef struct ID_REQUEST {
int val;
struct ID_REQUEST * suivant;
}ID_REQUEST;
void afficherListe(ID_REQUEST* liste);
void ajouter(ID_REQUEST*liste, int valeur);
void supprimerElement(ID_REQUEST* liste, int valeur);
/********************************** *********************/
void ajouter(ID_REQUEST*liste, int valeur){
struct ID_REQUEST* new = malloc(sizeof *new);
if(new != NULL ) {
new->val=valeur;
new->suivant = NULL;
}
if (liste == NULL){
liste = new;
}
else {
struct ID_REQUEST* temp=liste;
while(temp->suivant != NULL){
temp = temp->suivant;
}
temp->suivant = new;
return;
}
}
/********************************** *********************/
void supprimerElement(ID_REQUEST* liste, int valeur)
{
/* Liste vide, il n'y a plus rien à supprimer */
if(liste == NULL)
return;
/* Si l'élément en cours de traitement doit être supprimé */
if(liste->val == valeur)
{
/* On le supprime en prenant soin de mémoriser
l'adresse de l'élément suivant */
ID_REQUEST* tmp = liste->suivant;
free(liste);
/* L'élément ayant été supprimé, la liste commencera à l'élément suivant
pointant sur une liste qui ne contient plus aucun élément ayant la valeur recherchée */
supprimerElement(tmp, valeur);
return;
}
else
{
/* Si l'élement en cours de traitement ne doit pas être supprimé,
alors la liste finale commencera par cet élément et suivra une liste ne contenant
plus d'élément ayant la valeur recherchée */
supprimerElement(liste->suivant, valeur);
return;
}
}
/********************************** *********************/
void afficherListe(ID_REQUEST* liste)
{
ID_REQUEST *tmp = liste;
/* Tant que l'on n'est pas au bout de la liste */
printf("\n ********************************** \n");
while(tmp != NULL)
{
/* On affiche */
printf("%d ", tmp->val);
/* On avance d'une case */
tmp = tmp->suivant;
}
}
/********************************** *********************/
int main(){
struct ID_REQUEST* liste = malloc(sizeof *liste);
afficherListe(liste);
ajouter(liste, 1);
ajouter(liste, 3);
afficherListe(liste);
supprimerElement(liste,3);
afficherListe(liste);
} |
Partager