Vous êtes sur la page 1sur 3

Année universitaire 2023/2024

Section : INFO-1
Enseignante : Fehima Achour
Matière : Algorithmique et programmation C

La structure de données FILE (Type de Données Abstrait)


Représentation chainée de la SD FILE (TDA) :

/***File.h***/
struct element{
int cle;
struct element *suivant;
};
struct file {
struct element * tete;
struct element * queue;
};
void creer_file (struct file *);
unsigned file_vide (struct file);
int premier (struct file);
void enfiler (int, struct file *);
void defiler (struct file *) ;

/***File.c***/
#include <assert.h>
#include <stdlib.h>
#include "file.h"

void creer_file (struct file *f) {


f-> tete = NULL;
f- > queue = NULL;
}
unsigned file_vide(struct file f){
return ((f.tete == NULL) && (f.queue == NULL));
}
int premier (struct file f){
assert (!file_vide(f));
return ((f.tete)->cle);
}
Année universitaire 2023/2024
Section : INFO-1
Enseignante : Fehima Achour
Matière : Algorithmique et programmation C

void enfiler (int info, struct file *f) {


struct element * e ;
e = (struct element*) malloc(sizeof (struct element)) ;
e -> cle = info;
e -> suivant = NULL;
if (! file_vide(*f)) {
f -> queue -> suivant = e ;
f -> queue = e ;
} else {
f -> tete = e ;
f -> queue = e ;
}
}
void defiler (struct file *f) {
struct element *q ;
assert(! file_vide (*f));
q = f -> tete;
f -> tete = q -> suivant ;
free(q) ;
if (f -> tete == NULL)
f -> queue = NULL;
}
Année universitaire 2023/2024
Section : INFO-1
Enseignante : Fehima Achour
Matière : Algorithmique et programmation C

/***Test.c***/
#include<stdio.h>
#include"file.h"

void main() {
unsigned i;
struct file f1;
struct file f2;
creer_file(&f1);
creer_file(&f2);
for(i=1;i<=10;i++)
enfiler(i,&f1);
for(i=11;i<=20;i++)
enfiler(i,&f2);
for(i=1;i<=10;i++) {
printf("%d \t %d \n",premier(f1), premier(f2));
defiler(&f1);
defiler(&f2);
}
if (file_vide(f1)&&file_vide(f2))
printf("c'est bon les deux files sont vides..");
else
printf("probleme");
}

Vous aimerez peut-être aussi