#include #include // Solution de l'exo 3 de l examen ALGO ISIL, Code écrit par Prof. Slimane LARABI //=============================================================================== typedef struct adr { int num; char *rue; char *ville; char *pays; } adr; typedef struct client { char *nom; char *prenom; int numcarte; adr adresse; int numtel; } client; // Déclaration de la file FileReq typedef struct filereq { client contenu1; int contenu2; struct filereq *suivant; } filereq; typedef struct FileTQ { filereq *tete; filereq *queue; } FileTQ; int InsertElement(FileTQ *TQ, client cl, int codereq) { filereq *ad; ad=(filereq*) malloc(sizeof(filereq)); if(TQ->tete==NULL) { TQ->tete=ad; ad->suivant=NULL; } else { TQ->queue->suivant=ad; ad->suivant=NULL; } TQ->queue=ad; ad->contenu1=cl; printf(" x nom= %s \n", ad->contenu1.nom); printf(" x prenom = %s \n", ad->contenu1.prenom); printf(" x num carte = %d \n", ad->contenu1.numcarte); printf(" x num adr = %d \n", ad->contenu1.adresse.num); printf(" x rue adr = %s \n", ad->contenu1.adresse.rue); printf(" x ville = %s \n", ad->contenu1.adresse.ville); printf(" x pays = %s \n", ad->contenu1.adresse.pays); printf(" x num tel = %d \n", ad->contenu1.numtel); ad->contenu2=codereq; printf(" x Code requete = %d \n", ad->contenu2); return 0; } filereq* Servir(FileTQ *TQ) { filereq *ad; if(TQ->tete==NULL) { printf("impossible de servir la file est vide \n"); ad=NULL; return ad; } else { ad=TQ->tete; TQ->tete=TQ->tete->suivant; if(TQ->tete==NULL){TQ->queue=NULL;} return ad; } } int CompteElement(FileTQ *TQ, int codereq) { int compteur=0; filereq *ad; ad=TQ->tete; while (ad!=NULL) { if (ad->contenu2==codereq) compteur++; ad=ad->suivant; } return compteur; } int SuppressionElement(FileTQ *TQ, int codereq) { filereq *ad; ad=TQ->tete; while (ad!=NULL) { if (ad->contenu2==codereq) { // Suppression de tous les elements dont le code est egal a codereq TQ->tete=ad->suivant; free(ad); } ad=ad->suivant; } if(TQ->tete==NULL)TQ->queue=NULL; return 0; } int main() { //Ceation de la file filereq: réservation de l'espace pour tete et queue. FileTQ *TQ; TQ=(FileTQ*) malloc(sizeof(FileTQ)); TQ->tete=NULL; TQ->queue=NULL; //Allocation de la mémoire pour les données concernant la requete. client cl; cl.nom=(char*) malloc(10*sizeof(char)); cl.prenom=(char*) malloc(10*sizeof(char)); cl.adresse.rue=(char*) malloc(20*sizeof(char)); cl.adresse.ville=(char*) malloc(10*sizeof(char)); cl.adresse.pays=(char*) malloc(10*sizeof(char)); // Lecture int i, NbClients; printf("Donnez le nombre de clients à mémoriser : \n"); scanf("%d", &NbClients); for (i=0; icontenu1;;;; printf("nom= %s \n", ad->contenu1.nom); printf("prenom = %s \n", ad->contenu1.prenom); printf("num carte = %d \n", ad->contenu1.numcarte); printf("num adr = %d \n", ad->contenu1.adresse.num); printf("rue adr = %s \n", ad->contenu1.adresse.rue); printf("ville = %s \n", ad->contenu1.adresse.ville); printf("pays = %s \n", ad->contenu1.adresse.pays); printf("num tel = %d \n", ad->contenu1.numtel); printf(" \n Code requete = %d", ad->contenu2); } // Question 4: Supprimer toutes les requetes de val =val2 int val2; printf("donnez la valeur du code de la requete val2:"); scanf("%d", &val2); SuppressionElement(TQ,val2); return 0; }