IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

implementer une file avec liste chainée


Sujet :

C++

  1. #1
    Membre régulier Avatar de sub-0
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 197
    Points : 76
    Points
    76
    Par défaut implementer une file avec liste chainée
    Bonsoir tous le monde;
    Je dois réaliser un programme qui implémente une file avec une liste chainée, j'ai écrit un petit code mais malheureusement ça me donne un résultat non désiré, je demande votre aide SVP.
    voila le code de mon programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    #include <stdio.h>
    #include <conio.h>
    #include <iostream>
    #include <stdlib.h>
    #define taille 50
    using namespace std;
     
    typedef struct noeud
    {
      char nom;
      char succ [taille];
      char pred [taille];
      int nbrsucc;
      int nbrpred;
      struct noeud* suivant;
    };
     
    typedef struct File{
      noeud *debut;
      noeud *fin;
      int size;
    } ;
     
    void initialiser (File &suite){
      suite.debut = NULL;
      suite.fin = NULL;
      suite.size = 0;
    } 
     
    noeud* initialisation(){
           return NULL;
           }
     
    bool estVide(File &suite){
         return (suite.debut == NULL || suite.fin == NULL);
         }
     
    void enfiler (File &suite,noeud* courant,noeud graphe ){
      noeud* nouveau_element;
      nouveau_element=&graphe;
      cout<<nouveau_element->nom<<endl;
      if(courant == NULL){
        if(suite.size == 0)
        suite.fin = nouveau_element;
        nouveau_element->suivant = suite.debut;
        suite.debut = nouveau_element;
      }
      else {
        if(courant->suivant == NULL)
          suite.fin = nouveau_element;
        nouveau_element->suivant = courant->suivant;
        courant->suivant = nouveau_element;
         } 
      suite.size++;
     
    }   
     
    /* affichage de la file */
    void affiche(File &suite){
      noeud* courant;
      int i,j;
      courant = suite.debut;
      while(courant->suivant != NULL)
      {
        cout<<"le nom du noeud: "<<courant->nom<<endl; 
                 cout<<"Les successeurs de "<<courant->nom<<" sont:    ";
                 for(i=0;i<courant->nbrsucc;i++)
                     cout<<courant->succ[i]<<"  ;";
                cout<<endl;
                cout<<"Les predeccesseurs de: "<<courant->nom<<" sont:     ";    
                 for(i=0;i<courant->nbrpred;i++)
                     cout<<courant->pred[i]<<"  ;";
                cout<<endl;
                courant = courant->suivant;
      }
    }
     
    int main(){
        int choix,rep1,rep2,rep3;
        noeud graphe;
        File suite;
        char noun;
        initialiser(suite); 
        do{   
              cout<<endl<<"-- Menu --"<<endl;
              cout<<"1 - Creer un graphe "<<endl;  
              cout<<"2 - Afficher le graphe "<<endl;
              cout<<"3 - Decomposer le graphe en niveaux "<<endl;
           /* cout<<"4 - affichier la nouvelle struture du graphe "<<endl;*/
              cout<<"0 - Quitter "<<endl;
              cout<<"Entrer votre choix "<<endl;
              cin>>choix;
     
              switch(choix){
                    case 1: { 
                               while( rep1 != 0){
                                 cout<<"Pour entrer un noeud veuillez tapez 1 sinon tapez 0:"<<endl;
                                 cin>>rep1;
                                 if(rep1==1){ 
                                   cout<<"Entrez le nom du noeud:"<<endl;
                                   cin>>noun;
                                   graphe.nom=noun;
                                   graphe.nbrsucc=0;
                                   graphe.nbrpred=0;
                                   while( rep2 != 0){
                                        cout<<"Pour entrer un successeur de "<<graphe.nom<<" veuillez tapez 1 sinon tapez 0:"<<endl;
                                        cin>>rep2;
                                        if(rep2==1){
                                             graphe.nbrsucc++;       
                                             cout<<"Entrez le nom du successeur:"<<endl;
                                             cin>>graphe.succ[graphe.nbrsucc-1];                         
                                                  }
                                         }  
                                   while(rep3 !=0){
                                        cout<<"Pour entrer un predeccesseur de "<<graphe.nom<<" veuillez tapez 1 sinon tapez 0:"<<endl;
                                        cin>>rep3;
                                        if(rep3 ==1){
                                            graphe.nbrpred++;
                                            cout<<"Entrez le nom du predecesseur:"<<endl;
                                            cin>>graphe.pred[graphe.nbrpred-1];
                                                   } 
                                      }   
                                      }
     
                              enfiler (suite,suite.fin,graphe);
                          }   
                                    }
                                    break;
     
                            case 2: {if (estVide(suite))
                                        cout<<"Le graphe est vide "<<endl;
                                    else
                                        affiche(suite);
                                    }
                                    break;
                            case 3: {if (estVide(suite))
                                     cout<<"Le graphe est vide "<<endl;
                                     else{
                                          ;
                                         }
                                    }   
                            }
           }while(choix!=0);      
    system("pause");
     return 0;
    }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Salut, c'est un peu vague pour t'aider ca. Tu postes un gros bout de code en disant que ca ne fait pas ce que tu veux mais :

    • Que veux tu que ca fasse ?
    • Qu'est ce que ca fait ?
    • Peut tu diminuer ton code au maximum ?
    • D'ou penses tu que l'erreur pourrait venir ?

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Pourquoi un noeud n'est-il tout simplement pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct noeud
    {
      char nom;
      struct noeud* suivant;
    };

Discussions similaires

  1. Tri d'une pile avec liste simplement chainée
    Par thecabbages dans le forum C
    Réponses: 3
    Dernier message: 17/12/2009, 21h08
  2. probleme avec liste chainée
    Par Liiscar dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 28/11/2006, 20h37
  3. imprimer une facture avec liste de produits variables
    Par ouldfella dans le forum Delphi
    Réponses: 4
    Dernier message: 30/07/2006, 23h10
  4. [debutant] pb avec liste Chainée.
    Par FamiDoo dans le forum Débuter
    Réponses: 2
    Dernier message: 19/03/2006, 16h41
  5. Mal a la tete avec liste chainée d'objet
    Par Raton dans le forum C++
    Réponses: 23
    Dernier message: 03/08/2005, 22h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo