ben t'as un champ previous en plus, c'est juste un chainege de plus à maintenir. apparemment tu fais du C++, alors pourquoi ne pas faire une jolie classe, chacher tout ces pointeurs, et rajouter des fonctionnalites (insertion(rang), suppression(rang), copie, etc)
Code :
- void PostMess(NODE* NodeList, /* mes données */)
- {
- NODE* pNewNode = new NODE;
- // pNewNode = mes données
- pNewNode->pNext = NodeList;
- NodeList = pNewNode
- }
|
l'a tu consideres que l'insertion se fait en tete. le problème c'est que ça ne marche pas: ton paramètre NodeList n'est pas modifié car il manque une indirection (rajoute un niveau de pointeur sur NodeList de facon a pouvoir modifié l'argument effectif)
Code :
- NODE* GetMessage(NODE* NodeList)
- {
- for(NODE* ForLastNode = NodeList; ForLastNode->pNext->pNext != NULL; ForLastNode = ForLastNode->pNext);
- // en admettant que g mis pour le 1er node entré : pNext = NULL
-
- NODE* LastNode = ForLastNode->pNext;
- ForLastNode->pNext = NULL;
- return LastNode;
- }
|
ton for ne peut pas marcher tu test si ForLastNode->pNext->pNext!= NULL, encore faut il que ForLastNode soit different de NULL et valide! et pi de toute facon je comprens rien à ta fonction. c'est pas claire, ni pour moi, ni dans ma tete. avant de commencer à vouloir sur-spécialiser ta liste pour un problème spécifique, commence par te pencher sur les listes générique ou utilises les std::list (meme si j'ai bien compirs que c'etait un exercice didactique)
Message édité par Taz@PPC le 19-12-2002 à 21:57:13
---------------
du bon usage de rand [C] / [C++]