Vous êtes sur la page 1sur 4

Exercice2 

: tableau des files


TabFile.h : interface
#ifndef TABFILE_H_INCLUDED

#define TABFILE_H_INCLUDED

#define m 4

/ Puisque le nombre des catégories est connu d’avance ,on le déclare dans la partie
interface pour être visible à l’utilisateur/
struct element{

int cle;

struct element* suivant;

};

struct file{

struct element* tete;

struct element* queue;

};

void cree_tab (struct file* []); / opération de création d’une tableau des adresses des files/

unsigned vide(struct file* []); / opération de consultation de tableau /

void ajout(struct file*[],int, unsigned); / opération d’adjonction d’un entier à la file de catégorie
donnéé /

void supprime(struct file* [],unsigned); / opération de suppression de premier entier de la file de


catégorie donnée /

#endif // TABFILE_H_INCLUDED
TabFile.c : implementation
#include<malloc.h>

#include<assert.h>

#include"Tabfile.h"

#include<stdio.h>

/ On déclare statiquement les opérations d’implémentation d’une file afin de ne pas


être visualiser par l’utilisateur dans autres fichiers /
static void cree_f(struct file* f) / créer une file vide/
{

f->tete=NULL;

f->queue=NULL;

static unsigned vide_f(struct file f) / retourne 1 si la file est vide sinon 0/


{

return((f.tete==NULL)&&(f.queue==NULL));

static int premier(struct file f) / retourne le 1er entier enfilé dans la file/
{

assert(!vide_f(f));

return(f.tete->cle);

static void enfiler(int x,struct file *f) / adjunction d’un entire à la file/
{

struct element *q;

q=(struct element*) malloc(sizeof (struct element));

q->cle=x;

q->suivant=NULL;

if(vide_f(*f))
f->tete=q;

else

f->queue->suivant=q;

f->queue=q;

static void defiler(struct file *f) / suppression de 1er entire de la file /


{

assert(!vide_f(*f));

struct element *q;

q=f->tete;

f->tete=f->tete->suivant;

if (f->tete==NULL)

f->queue=NULL;

free(q);

void cree_tab(struct file* f[]) / struct file* f[] : un tableau d’adresses des files/
{

unsigned i;

for(i=0;i<m;i++)

cree_f(struct file* f[i]);

unsigned vide(struct file* f[]) / parcourir tout le tableau et consulter chaque file est ce qu’elle est
vide ou non /

unsigned i=0;

while(i<m)

if (!vide_f(*f[i]))

return 0;

i++;

}
return 1;

void ajout(struct file* f[],int a,unsigned c) / adjonction d'un entier a au ensemble classé en catégorie
c donnée /

enfiler(a,f[c]);

void supprime(struct file* f[],unsigned c)/ suppression de premier entier de l'ensemble classé en
catégorie c donnée /

defiler(f[c]);

Vous aimerez peut-être aussi