0% ont trouvé ce document utile (0 vote)
19 vues3 pages

CorrigéTD8

Le document présente des exercices de programmation en C sur les structures de données, notamment les piles et les files. Il inclut des définitions de structures, des fonctions pour manipuler ces structures, ainsi que des programmes principaux pour tester leur fonctionnement. Les exercices démontrent la création, l'empilement, le désempilement, et l'affichage d'une pile, ainsi que la création et la lecture d'une file de caractères.

Transféré par

emna.selmi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
19 vues3 pages

CorrigéTD8

Le document présente des exercices de programmation en C sur les structures de données, notamment les piles et les files. Il inclut des définitions de structures, des fonctions pour manipuler ces structures, ainsi que des programmes principaux pour tester leur fonctionnement. Les exercices démontrent la création, l'empilement, le désempilement, et l'affichage d'une pile, ainsi que la création et la lecture d'une file de caractères.

Transféré par

emna.selmi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Programmation procédurale : C 1AGE ENIT2018/2019

Corrigé TD8
Pile et File

Exercice 1:
#include <stdio.h>
#include <stdlib.h>
/******* Définition d'une structure pile ***/
typedef struct
{
int val;
struct pile* prec;
}*pile;
/*********** Fonction de création de la pile ********/
pile creer_pile()
{
return NULL;
}
/**************Fonction de test pour savoir si la pile est vide ****/
int vide(pile p)
{
return (p==NULL) ;
}
/******Fonction qui retourne le sommet de la pile ****/
int sommet(pile p)
{
if(p)
return p->val;
else return -32;
}
/*******Fonction qui empile une valeur sur la pile *****/
void empiler(pile * p, int ival)
{
pile e;
e=(pile)malloc(sizeof(pile)) ;
e->val=ival;
e->prec=*p;
*p=e;
}

1/3
Programmation procédurale : C 1AGE ENIT2018/2019

/*******Fonction qui désempile la pile *****/


pile dsemepiler(pile *p)
{
pile np;
if(*p)
{
np=*p;
*p= (*p)->prec;
free(np);
}
}
/*****Fonction qui affiche la pile de manière récursive ***/
void afficher_recursive(pile p)
{
int ival;
if(p)
{
ival = p->val;
p=p->prec;
afficher_recursive(p);
printf("%d ", ival);
}
}
/*************Programme principal************/
int main()
{
pile p;
p=creer_pile();
empiler(&p, 8);
empiler(&p, 4);
empiler(&p, 19);
afficher_recursive(p);
return 0;
}
Exercice 2 :
#include <stdio.h>
#include <stdlib.h>
/****Définition d'un type file de caractères ****/
typedef struct
{
char * cdebut;
char * cfin;
char * ctete;
char * cqueue;
}*file;
/******Fonction de création de la file *******/
file creer(unsigned Taillef)
{
file f;
f=(file)malloc(sizeof(file));
f->cdebut = f->ctete= (char*) malloc(Taillef);
f->cfin=f->cqueue = f->cdebut + Taillef - 1;
return f;
}
2/3
Programmation procédurale : C 1AGE ENIT2018/2019

/******Fonction de déplacement d'un espace mémoire d'un pointeur de la file *******/


char * plusun(file f, char * cpointeur)
{
if(cpointeur==f->cfin)
return f->cdebut;
else
return ++cpointeur;
}
/******fonction de test permettant de savoir si la file est vide **/
int vide(file f)
{
return (plusun(f, f->cqueue)==f->ctete);
}
/******fonction de test permettant de savoir si la file est pleine **/
int pleine(file f)
{
return(plusun(f, f->cqueue+1)==f->ctete);
}
/********Fonction de lecture de la tête de la file****/
char lire(file f)
{
if(!vide(f))
return(*(f->ctete));
}
/************Programme principal**********************/
int main()
{
file f;
f=creer(4);
printf("%c ", lire(f) );
return 0;
}

3/3

Vous aimerez peut-être aussi