Miles--Teg | C'est vrai que file ca peut preter à confusion !!!
*Mais pour dire file (genre file d'attente) j'ai pas trouvé autre chose !!!!
Des idees ??
Voilà la version finale :
Code :
- #include <stdio.h>
- #include <stdlib.h>
- /* La structure de la liste */
- typedef struct elt_struct {
- int valeur;
- struct elt_struct *suivant;
- } ElementListe;
- typedef ElementListe *Liste;
- /* La structure de la file */
- typedef struct file_struct {
- Liste tete;
- Liste fin;
- } File;
- /* On inclue ici les en-têtes des fonctions */
- #include "file.h"
- /* ***************************************************** */
- /* Entrée : nothing */
- /* Sortie : le pointeur NULL */
- /* Complexité : */
- /* Description : Crée une liste vide */
- /* ***************************************************** */
- Liste Creer_Vide (); /* declarée seule car les autres sont */
- /* dans la declaration commune */
- /* Pour initialiser la file */
- int Init ( File *file , int n ){
- file->tete = Creer_Vide();
- file->fin = file->tete;
- return 1;
- }
- /* Pour ajouter un elt en fin de file */
- int Ajouter_En_Fin ( File *file , int x ) {
- Liste newelement;
- /* creation nouvelle boite */
- newelement = (Liste) malloc(sizeof (ElementListe));
- if (newelement == NULL){ /* verification allocation */
- fprintf(stderr,"Erreur lors du malloc de l'ajout en fin de file !!" );
- return 0;
- }
- /* mise a jour valeur */
- newelement->valeur= x;
-
- /* mise a jour pointeur suivant du dernier element */
- newelement->suivant = NULL;
-
- /* mise a jour pointeur fin */
- if( file->fin == NULL ) {
- file->fin = newelement;
- }
- else {
- file->fin->suivant = newelement;
- file->fin = newelement;
- }
- if((*file).tete==NULL) {
- ((*file).tete) = newelement;
- }
- /*si arrivé ici, ok -> return 1*/
- return 1;
- }
- /* Pour récuperer le 1er elt de la file */
- int Tete ( File file , int *val ){
- if( file.tete == NULL) {
- printf("\nErreur 1 : la file est vide !!\n" );
- return 0;
- }
- *val = (file.tete)->valeur;
- return 1;
- }
- /* Pour supprimer le 1er elt de la file */
- int Supprimer_Tete ( File *file ){
- ElementListe *elemList ;
- if ( file->tete == NULL ) {
- printf("\nErreur 2 : la file est vide !!\n" );
- return 0;
- }
- elemList = file->tete; /* Mémorisation de la zone a détruire */
- file->tete = (file->tete)->suivant; /* Réaffectation du début de la file */
- free(elemList); /* Libérartion de la mémoire o q p par m'elt */
- return 1;
- }
- /* Pour détruire la file à la fin */
- int Detruit ( File *file ){
- return 0;
- }
- /* Pour tester si la file est vide */
- int Est_Vide ( File *file ){
- if( file->tete == NULL ) {
- return 1;
- }
- return 0;
- }
- /* Pour créer une liste vide */
- Liste Creer_Vide (){
- return NULL;
- }
- /* Pour afficher la file */
- void Affiche ( Liste l ) {
- if ( l!=NULL ) {
- printf("%d ",l->valeur);
- Affiche ( l->suivant );
- }
- else {
- printf("-\n" );
- }
- }
- /* ************ Main ************ */
- int main () {
-
- int rep;
- /* creer une file */
- File file;
- int elem;
- int n, i, j;
- printf("\nDonnez n : " );
- scanf("%d",&n);
- printf("\totototototo\n" );
- Init ( &file , n );
- Affiche ( file.tete );
-
- system("PAUSE" );
-
- printf("\nOn va initialiser la file à n éléments!!\n" );
- printf("Donnez n : " );
- scanf("%d",&n);
- Init ( &file , n );
- printf("\nInitialisation terminée\n" );
- printf("Je met dans la file les elts 1...n\n" );
- for ( j=0 ; j<n ; j++ ) {
- i = Ajouter_En_Fin ( &file, j+1 );
- }
- printf("\nFile : " );
- Affiche ( file.tete );
- rep = 0;
-
- /* Boucle de test pour la file avec les,opérations implémentées : */
- /* Ajouter_en_fin */
-
- while ( rep != 4 ) {
- printf("donnez une commande :" );
- printf("\n\t1 : pour ajouter\n\t2 : pour supprimer un element\n\t" );
- printf("3 : pour afficher la file\n\t4 : pour quitter\nVotre choix : " );
- scanf("%d",&rep);
-
- if ( rep == 1 ) { /* ajouter un elem */
- printf("Donnez l'entier à ajouter : " );
- scanf("%d", &elem);
- i = Ajouter_En_Fin ( &file, elem );
- Affiche ( file.tete );
- }
- else {
- if ( rep == 2 ) { /* supprime l'element de tete */
- i = Supprimer_Tete ( &file );
- Affiche( file.tete );
- }
- else {
- if ( rep == 3 ) { /* Affiche la file */
- Affiche ( file.tete );
- }
- else {
- if ( rep == 4 ) {
- printf ("Fin ...\n" );
- }
- }
- }
- }
- }
-
- printf("\n" );
- return 0;
- } /* ************ Fin main ************ */
|
@+
Miles ---------------
Recherchez la liberté et devenez esclave de vos désirs. Recherchez la discipline et trouvez votre liberté.
|