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