Recherche personnalisée

Listes : Structure et opérations



C++BuilderX - Listes.c

Listes.c
/* Définiton du type Liste et des opérations élémentaires
  sur une liste.

*/


#include <stdio.h>
#include <stdlib.h> //Fonction malloc

//Définition d'une structure pour stocker les éléments d'une liste
struct element { int d;
struct element* suivant;};

//Définition du type Liste
typedef struct element* Liste ;


// Déclaration d'une variable de type Liste
Liste liste=NULL;


//Ajour d'un élément au début de la liste
void listeAjouter(int c)
{ struct element* elt;
//Réservation de l'espace mémoire pour stocker le nouvel élément
  elt=(struct element*) malloc(sizeof(struct element )) ;

  // L'argument c est copié dans le champ c de elt.

  elt->d=c;

  // L'ancien premier élément devient maintenant l'élément qui suit
  // le nouvel élément
  elt->suivant=liste;

  //elt est premier élément de la liste
  liste=elt;

}


//Insertion d'un nouvel élément après un élément existant dans la liste.

// soit p un pointeur sur cet élément
void liste_Inserer(int c, struct element* p){
                  struct element* elt;
                  //Allocation de la mémoire pour le nouvel élément
                  elt=(struct element*) malloc(sizeof(struct element));

                  elt->d=c;

                  //le suivant de p doit être maintenant le suivant de elt

                  elt->suivant=p->suivant;

                  // le suivant de p est elt
                  p->suivant=elt;
}


/* Suppresion d'un élément de la liste.
   p est un pointeur sur l'élément qui précéde celui à supprimer
   pour supprimer le premier élément de la liste, on passe à la fonction
   une valeur nulle.
   La liste est supposée contenir au moins un élément*/

void liste_Supprimer(struct element* p){
                      //Tester si l'élément à supprimer est le premier de la liste
                      if(p==NULL){
                                  /*Suppression du premier élément de la liste
                                  Le second élément de la liste va devenir maintenant
                                  le premier élément de la liste*/

                                  liste=liste->suivant;
                                  //Libération de l'espace ocuppé par le premier élément
                                  free(liste);
                                  }
                      else {
                                  /* On doit ici supprimer l'élément qui suit p
                                  Le suivant de l'élément à supprimer doit être
                                  défini comme le suivant de p*/
                                  p->suivant=(p->suivant)->suivant;
                                  //Libération de l'espace occupé par l'élément supprimé

                                  free(p->suivant);
                          }
}


/* Calcul du nombre d'éléments de la liste*/
int liste_Nombre_elt(){
  struct element* l=liste;
  int nbElements=0; //Nombre d'éléments de la liste.

  while(l!=NULL)
  { nbElements++;
    l=l->suivant;
  }
  return nbElements;
}























Listes.c

calle
calle
calle

Suivre la vie de ce site RSS -
HitMaroc.net
Formation GoogleCe site est listé dans la catégorie Informatique : Programmation informatique Dictionnaire