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 :

Liste chainée et parcours de la liste


Sujet :

C++

  1. #1
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut Liste chainée et parcours de la liste
    Bonjour
    voila ce que j'ai fait.
    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
     
    struct Cellule {
        int info;
        Cellule* Suivant;
     
    };
     
    typedef struct Cellule Cellule;
     
    void parcours(Cellule* liste) {
        Cellule* listeC;
        listeC = liste;
        while (listeC!=nullptr)  {
        cout<<"|"<<listeC->info;
        listeC = listeC->Suivant;}
    }
     
    int main() {
    int valeur=1;
    Cellule* liste = nullptr;
    while (valeur>0) {
        cout<<"valeur > 0 sinon fin de programme ** quel est la valeur:";
        cin>>valeur;
        Cellule* p = new Cellule;
        p->info = valeur;
        p->Suivant = liste;
        liste = p;
        delete p;
                     }
     
    parcours(liste);
     
    return 0;
    }
    problème ça m'envoi que des chiffres sans fin ???
    Merci de toute l'aide que vous pourrez m'apporter !!!

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 493
    Par défaut
    Salut,

    Tout d'abord, ce n'est pas du C++ ce que tu nous montre, mais du C.

    C'est un exercice de classe ?
    En c++ moderne, on a le conteneur std::forward_list pret à l'emploi qui t'offre exactement le comportement que tu essaies de coder: https://en.cppreference.com/w/cpp/container.

    Concernat ton code:
    Ligne 26: Tu assignes liste à l'element suivant, qui vaut nullptr, autant écrire directement nullptr, ce sera plus clair.
    Ligne 27: Tu assigne au pointeur liste l'adresse de la cellule nouvellement créée, donc liste et p pointent au même endroit.
    Ligne 28: Tu détruis p, en conséquence liste pointe maintenant vers un endroit invalide. En seconde conséquence, tu obtiens un beau comportement indéterminé (tu boucles sur des pointeurs invalides).

    Conclusion:
    Ne réinvente pas la roue,
    Passe par la librairie standard autant que possible.

  3. #3
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut
    Merci j'ai enlever delete p et ca fonctionne.
    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/11/2005, 13h44
  2. Réponses: 15
    Dernier message: 24/05/2005, 08h34
  3. Réponses: 11
    Dernier message: 02/05/2005, 19h30
  4. manipulation d'une liste chainé
    Par sorari dans le forum C++
    Réponses: 1
    Dernier message: 16/03/2005, 12h32
  5. Trie liste chaine
    Par Congru dans le forum C
    Réponses: 2
    Dernier message: 30/03/2004, 19h05

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