Académique Documents
Professionnel Documents
Culture Documents
–
Faculté des Sciences
Département d’informatique
TP N° 02
Rappel :
1. Structure d'une liste chaînée :
typedef struct Mot_De_La_Phrase {
char Mon_mot[20];
struct Mot_De_La_Phrase* Adresse_Mot_suivant;
} Mot;
2
Fonctions utiles
1- Manipulation de fichiers :
#include <stdio.h> /** Copier le contenu de chaque ligne du fichier
#include <stdlib.h> Texte.txt dans la variable chaine
#include <string.h> (100 caractères Max) **/
/** Lire la chaine de taille max 100 à partir de l’écran**/ if(file == NULL){
fgets(chaine,100,stdin); printf("Erreur");
return 0;
/** Ecrire la chaine saisie dans le fichier test.txt **/ }
fprintf(file,"%s",chaine);
/** Copier chaque caractère du fichier Texte.txt dans
la variable c **/
/** Fermer le Fichier test.txt **/ while ((c = fgetc(file)) != EOF){
fclose(file); /**Affichage sur Ecran caracère par caractère **/
putc(c,stdout);
/**
/**Lecture d'un fichier Ligne par Ligne et Affichage sur Ou bien putchar(c);
Ecran **/ Ou bien
fprintf(stdout,"%c",c);
/** Ouvrir le Fichier existant test.txt en mode Lecture (r) **/ ou bien
printf("%c",c);
file = fopen("test.txt","r"); **/
if(file == NULL){ }
printf("Erreur"); /** Fermer le Fchier test.txt**/
return 0; fclose(file);
} }
3
Les piles Les files
typedef struct cellule{ typedef struct cellule{
int valeur; int valeur;
struct cellule * next; struct cellule * next;
}Element; }Element;
typedef struct pile{ typedef struct file{
Element* sommet; Element* sommet;
}Pile; Element* queue;
Pile* InitialiserPile (Pile* p){ }File;
p=malloc(sizeof(Pile)); File* InitialiserFile(File* f){
p->sommet=NULL; f=malloc(sizeof(File));
return p;} f->sommet=NULL;
Pile* Empiler (Pile* p,int v){ f->queue=NULL;
Element* nouveauElement= malloc (sizeof (Element)); return f;}
nouveauElement->valeur=v; File* Enfiler (File* f,int v){
nouveauElement->next=p->sommet; Element* nouveauElement= malloc (sizeof (Element));
p->sommet=nouveauElement; nouveauElement->valeur=v;
return p; nouveauElement->next=NULL;
} if (f->sommet==NULL){
Pile* Depiler (Pile* p){ f->sommet=nouveauElement;
if (p->sommet==NULL) f->queue=nouveauElement;
return p; return f;}
Element* e; f->queue->next=nouveauElement;
e=p->sommet; f->queue=nouveauElement;
p->sommet=p->sommet->next; return f;}
free(e); File* Defiler (File* f){
return p; if (f->sommet==NULL)
} return f;
int SommetPile (Pile* p){ else if(f->sommet==f->queue){
if (p->sommet==NULL) free(f->sommet);
return -9999; /** code pile vide */ f->sommet=NULL;
else f->queue=NULL;
return p->sommet->valeur; return f;}
} Element* e;
void AfficherPile (Pile* p){ e=f->sommet;
Element *ep=p->sommet; f->sommet=f->sommet->next;
while (ep!=NULL){ free(e);
printf("\n |%d|",ep->valeur); return f;}
ep=ep->next; int SommetFile (File* f){
} if(f->sommet==NULL) return -9999; /** code file vide */
printf("\n"); else return f->sommet->valeur;}
} void AfficherFile (File* f){
Pile* ViderPile (Pile* p){ Element *ep=f->sommet;
while (p->sommet!=NULL){ while (ep!=NULL){
Element *e=p->sommet; printf(" |%d| ",ep->valeur);
p->sommet=p->sommet->next; ep=ep->next;} }
free(e); File* ViderFile (File* f){
} while (f->sommet!=NULL){
return p; Element *e=f->sommet;
} f->sommet=f->sommet->next;
free(e); }
4 f->sommet=NULL;
f->queue=NULL;
return f;}