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�


Sujet :

C++

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    116
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 116
    Par d�faut liste chain�
    j'utilise une liste doublement chain� avec la structure suivante :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    typedef struct dll
    {
    	struct dll		*prev;
    	struct dll		*next;
    	struct UpPile   *MyUpPile;
    } dll_s;
    quand j'utilise le mode d�bug :
    il me dit :

    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
     
    -	prev	0xdddddddd
    	prev	CXX0030: Error: expression cannot be evaluated
    	next	CXX0030: Error: expression cannot be evaluated
    	MyUpPile	CXX0030: Error: expression cannot be evaluated
    -	next	0xdddddddd
    	prev	CXX0030: Error: expression cannot be evaluated
    	next	CXX0030: Error: expression cannot be evaluated
    	MyUpPile	CXX0030: Error: expression cannot be evaluated
    -	MyUpPile	0xdddddddd
    	u_lrcTn	CXX0030: Error: expression cannot be evaluated
    	u_latitude	CXX0030: Error: expression cannot be evaluated
    	u_longitude	CXX0030: Error: expression cannot be evaluated
    	u_course	CXX0030: Error: expression cannot be evaluated
    	u_speed	CXX0030: Error: expression cannot be evaluated
    	prec	CXX0030: Error: expression cannot be evaluated

    moi je suppose que �a veut dire qu'elle est vide � cette instant.

    Est-ce vrai?

    malheureusement quand je fait un

    while(MaListe) { ... }

    Il rentre dedans.

    Est ce normal?

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    �a ne veut pas dire qu'elle est vide, mais que ta structure est non-initialis�e: Elle ne contient pas NULL, mais des suites de 0xDD...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    116
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 116
    Par d�faut
    pour supprimer j'utilise cela :

    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
    void CInterface::dll_remove (dll_s ** pp_dll)
    {
    	if (pp_dll != NULL && *pp_dll != NULL)
    	{
    		dll_s *p_l = *pp_dll;
    		dll_s *p_p = p_l->prev;
    		dll_s *p_n = p_l->next;
     
    		if (p_p != NULL)
    			p_p->next = p_n;
     
    		if (p_n != NULL)
    			p_n->prev = p_p;
     
    		free (p_l);
    		p_l = NULL;
     
    		if (p_n != NULL)
    			*pp_dll = p_n;
    		else
    			*pp_dll = p_p;
    	}
    }
    que faut il rajouter pour qu'il me le mette � null

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    � mon avis, ce n'est pas la suppression qui foire, mais la cr�ation...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    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
    Par d�faut
    Tu es au courant que tu peux utiliser std::list<> qui est une liste doublement cha�n�e ?

  6. #6
    Membre �clair� Avatar de nicolas66
    Profil pro
    �tudiant
    Inscrit en
    F�vrier 2004
    Messages
    326
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 326
    Par d�faut
    Peut-�tre qu'il le sait et que c'est impos� dans le cahier des charges de son projet

  7. #7
    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
    Par d�faut
    Depuis quand dans un projet on r�invente la roue ?
    Surtout pour des �l�ments qui sont des parties int�grantes de C++.

    Rien que le nom (CInterface::dll_remove) et la d�claration des m�thodes a priori publiques (des trucs avec des pointeurs de pointeurs) me para�t en plus �tre bien �trange.

  8. #8
    R�dacteur

    Avatar de loka
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Par d�faut
    Depuis quand dans un projet on r�invente la roue ?
    Surtout pour des �l�ments qui sont des parties int�grantes de C++.

    Rien que le nom (CInterface::dll_remove) et la d�claration des m�thodes a priori publiques (des trucs avec des pointeurs de pointeurs) me para�t en plus �tre bien �trange.
    juste petit hors sujet pour dire que parfois ce qu'on peut nous imposer en projet n'est pas forcement tr�s logique et je suis toujours le premier a raler ^^

  9. #9
    Membre Expert
    Avatar de Sivr�t
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    953
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 953
    Par d�faut
    +1 pour M�dinoc

    Il me semble qu'en d�bug les pointeurs peuvent avoir une valeur par d�faut suivant le compilateur (donc si on la trouve on sait, qu'on a oubli� une initialisation ) et trouver "0xdddddddd" dans son pointeur y ressemble pas mal. Mais il n'est pas vide car NULL=0 ce qui explique que le while se lance... et se plante car le pointeur part n'importe o�.

    V�rifie que tu mets bien tout � NULL lors de l'initialisation.

  10. #10
    Membre �clair� Avatar de nicolas66
    Profil pro
    �tudiant
    Inscrit en
    F�vrier 2004
    Messages
    326
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 326
    Par d�faut
    On r�invente parfois la roue quand c'est demand� (genre � la fac par exemple ...).

Discussions similaires

  1. R�ponses: 12
    Dernier message: 08/02/2005, 23h42
  2. Biblioth�que de listes chain�es
    Par gege2061 dans le forum C
    R�ponses: 29
    Dernier message: 17/12/2004, 20h15
  3. copie de liste chain�e
    Par tomsoyer dans le forum C++
    R�ponses: 15
    Dernier message: 31/08/2004, 18h20
  4. Trie liste chaine
    Par Congru dans le forum C
    R�ponses: 2
    Dernier message: 30/03/2004, 19h05
  5. tri de liste chain�e
    Par RezzA dans le forum C
    R�ponses: 7
    Dernier message: 26/01/2003, 20h25

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