Vous êtes sur la page 1sur 4

INSTITUT SUPERIEUR DU GENIE ELECTRIQUE Année académique 2022 / 2023

………………………………
2AMIFI – 2ARIT décembre 2023
…………………..
Semestre 3
…………….. P
a
Enseignant : Gouayon KOALA r
……………………………… c
o

CORRIGÉ TP N°2 - STRUCTURES DE DONNEES DYNAMIQUES

Exercice 1 (Pile.c):
1- Écrire en langage C, la structure d’une pile à l’aide d’une liste chaînée.
#include <stdio.h>
#include <stdlib.h>

/* Définition de la structure de donnée*/


typedef float TypeDonnee;

typedef struct Cell {


TypeDonnee donnee;
struct Cell *suivant;
} TypeCellule;

/**** Définition de la stucture Pile ****/


typedef TypeCellule *Pile;

2- Écrire les primitives de gestion des piles.


//Dans le même fichier Pile.c

/**** Fonction d'initialistion d'une Pile ****/


Pile Initialiser()
{
return NULL;
}

/**** Fonction EsVide : renvoie 1 si la liste est vide ****/


int EstVide(Pile P)
{
/* renvoie 1 si la Pile est vide */
return (P == NULL) ? 1 : 0;
}

/**** Fonction EstPleine une liste chaîne n’est jamais pleine ****/
int EstPleine(Pile P)
{
return 0; /* une liste chaÓnÈe níest jamais pleine */
}

/**** Fonction AccederSommet ****/


int AccederSommet(Pile P, TypeDonnee *pelem)
{
if (EstVide(P))
return 1; /* on retourne un code díerreur */
*pelem = P->donnee; /* on renvoie l’élément */
return 0;
}

/**** Fonction Empiler permet d’ajouter un élément au sommet ****/


void Empiler(Pile* pP, TypeDonnee elem)
{
Pile q;
q = (TypeCellule*)malloc(sizeof(TypeCellule)); /* allocation */
q->donnee = elem; /* ajout de l’élément à empiler */
q->suivant = *pP; /* insertion en tête de liste */
*pP =q; /* mise à jour de la tête de liste */
}

/**** Fonction Depiler permet de supprimer un element ****/


int Depiler(Pile *pP, TypeDonnee *pelem)
{
Pile q;
if (EstVide(*pP))
return 1; /* on ne peut pas supprimer d’élément */
*pelem = (*pP)->donnee; /* on renvoie l’élément de tête */
q = *pP; /* mémorisation d’adresse de la première cellule */
*pP = (*pP)->suivant; /* passage au suivant */
free(q); /* destruction de la cellule mémorisée */
return 0;
}

/**** Fonction Detruire la Pile ****/


void Detruire(Pile *pP)
{
Pile q;
while (*pP != NULL) /* parcours de la liste */
{
q = *pP; /* mémorisation de l’adresse */
/* passage au suivant avant destruction : */
*pP = (*pP)->suivant;
free(q); /* destruction de la cellule mémorisée */
}
*pP = NULL; /* liste vide */
}

/**** Fonction Vider la Pile ****/


void Vider(Pile *pP)
{
Detruire(pP); /* destruction de la liste */
*pP = NULL; /* liste vide */
}
3- Écrire un programme principal qui permet d’utiliser la pile avec un menu qui propose
les différentes opérations que l’on peut effectuer.
//Dans le même fichier Pile.c

int main(void){
int choix;
TypeDonnee *pelem;
TypeDonnee elem;

Pile *pP;
do {

printf("********************************\n");
printf("****** Gestion de Pile ******\n");
printf("******************************** \n");
printf("** sélectionnez l'opération :: ** \n");
printf(" 1 :: Créer une Pile vide \n");
printf(" 2 :: Ajouter un élément dans la Pile \n");
printf(" 3 :: Supprimer un élément dans la Pile \n");
printf(" 4 :: Tester si la Pile est vide \n");
printf(" 5 :: Détruire la Pile \n");
printf(" 6 :: Vider la Pile \n");
printf(" 0 :: Quitter le programme \n");

scanf("%d", &choix);

switch (choix){
case 1 : *pP = Initialiser();
printf(" La pile P a été créé avec succès \n");
break;
case 2 :
printf("Entrer la valeur de l'element à ajouter dans la Pile");
scanf("%f", &elem);
Empiler(pP, elem);
printf("L'element a été ajouté avec succès!!!");

break;

case 3 :
Depiler(pP, pelem);
printf("La valeur de l'element recupérer est :: %f", *pelem);

break;

case 4 :
if (EstVide(*pP) == 1)
printf("La Pile est vide");
else
printf("La Pile n'est PAS VIDE");
break;

case 5 : Detruire(pP);
break;

case 6 : Vider(pP);
break;

}while(choix ==0);

return 0;
}
Exercice 2 (File.c):

1- Écrire en langage C, la structure de file à l’aide d’une liste chaînée


2- Écrire les primitives de gestion des files.
3- Écrire un programme principal qui permet d’utiliser la file avec un menu qui propose
les différentes opérations que l’on peut effectuer.

Vous aimerez peut-être aussi