cobra84
Messages postés42Date d'inscriptiondimanche 26 août 2001StatutMembreDernière intervention13 août 2007
-
14 nov. 2002 à 21:08
spidermario
Messages postés121Date d'inscriptionmercredi 26 octobre 2005StatutMembreDernière intervention14 mars 2009
-
6 août 2006 à 21:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
spidermario
Messages postés121Date d'inscriptionmercredi 26 octobre 2005StatutMembreDernière intervention14 mars 20091 6 août 2006 à 21:09
Au lieu de
#define TRUE 1
#define FALSE 0
Tu peux mettre
enum BOOL
{
FALSE,TRUE
};
Mais de toutes façons, ça ne te servira pas, je n'ai pas vu une seule utilisation de TRUE ou de FALSE dans ton programme...
cs_Xs
Messages postés368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDernière intervention 1 septembre 2008 26 déc. 2002 à 12:03
Merci ! grace a ce code+ explications + refonte en C++ par vieuxLion, j'ai enfin compris lutilité et surtout la maniére de les utiliser (c'est sur, c'est pas dur de faire la class/struct, mais fo savoir l'utiliser apres).
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 20048 16 nov. 2002 à 18:42
c'est un bon source. Compliments
pour des idées d'amélioration :
mettre en cache le nombre d'éléments, proposer une fonction de recherche, utiliser C++ pour les new/delete + la protection des variables + la simplification de l'interface par rapport à l'implémentation + la généricité ... etc...
voila ma version en C++
http://www.cppfrance.com/article.aspx?Val=1104
cobra84
Messages postés42Date d'inscriptiondimanche 26 août 2001StatutMembreDernière intervention13 août 2007 15 nov. 2002 à 21:24
Voila, j'ai mis à jour la source... On peut maintenant effacer la liste!
@+
cobra84
Messages postés42Date d'inscriptiondimanche 26 août 2001StatutMembreDernière intervention13 août 2007 15 nov. 2002 à 19:53
Kaid: Merci pour le listing de la libération de la liste ;-)
@+
trinitacs
Messages postés249Date d'inscriptionmardi 16 juillet 2002StatutMembreDernière intervention 7 août 20032 15 nov. 2002 à 18:42
Kaid >> Tu devrais ecrire carrément un tuto car les listes chaînées et les piles c'est qqch
Dommage que je ne puisse pas voir le code il ne veut pas s'afficher en entier celui la Rglll
cs_Lupin
Messages postés1Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention15 novembre 2002 15 nov. 2002 à 06:27
C'est tres interessant pour un profane comme moi
comme tutorial c'est pas mal du tout
cs_Kaid
Messages postés949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 20061 14 nov. 2002 à 23:52
En fait, tu peux très bien implanter le concept de liste en utilisant un tableau. Le problème, c'est que si ton tableau peut contenir X éléments, quand tu arrives à X+1 éléments, il faut que tu réalloues un nouveau tableau, que tu y copies les valeurs de l'ancien tableau et enfin que tu libéres l'ancien tableau. En répétant souvent l'opération, tu plombes les performances de ton programme. Ensuite, vient le problème de la suppression d'un élément: tu dois de nouveau passer par l'allocation, la copie et la libération.
C'est pour cela qu'on n'utilise par exemple la liste chainée. En fait, c'est une succession de noeuds contenant la valeur associée et le moyen d'accéder au noeud suivant (ici un pointeur). En utilisant ce concept, pour rajouter un élément, il suffit d'allouer un nouveau noeud puis d'y copier la valeur (je passe les détails de chainage). Pour la suppression, toujours aussi simple, tu dé-références le noeud et tu libères simplement le noeud.
Il existe aussi des listes doublement chainée (pointeur sur les noeuds précédent et suivant) qui permettent encore d'améliorer les performances.
cs_Xs
Messages postés368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDernière intervention 1 septembre 2008 14 nov. 2002 à 23:11
on peut expliquer svp l'utilité d'une liste chainée ? j'avoue que je comprend pas son principe...
cs_Kaid
Messages postés949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 20061 14 nov. 2002 à 21:37
Je recommence ....
Un détail: il ne sera pas plus simple d'avoir une fonction pour libérer toute la liste comme :
6 août 2006 à 21:09
#define TRUE 1
#define FALSE 0
Tu peux mettre
enum BOOL
{
FALSE,TRUE
};
Mais de toutes façons, ça ne te servira pas, je n'ai pas vu une seule utilisation de TRUE ou de FALSE dans ton programme...
26 déc. 2002 à 12:03
16 nov. 2002 à 18:42
pour des idées d'amélioration :
mettre en cache le nombre d'éléments, proposer une fonction de recherche, utiliser C++ pour les new/delete + la protection des variables + la simplification de l'interface par rapport à l'implémentation + la généricité ... etc...
voila ma version en C++
http://www.cppfrance.com/article.aspx?Val=1104
15 nov. 2002 à 21:24
@+
15 nov. 2002 à 19:53
@+
15 nov. 2002 à 18:42
Dommage que je ne puisse pas voir le code il ne veut pas s'afficher en entier celui la Rglll
15 nov. 2002 à 06:27
comme tutorial c'est pas mal du tout
14 nov. 2002 à 23:52
C'est pour cela qu'on n'utilise par exemple la liste chainée. En fait, c'est une succession de noeuds contenant la valeur associée et le moyen d'accéder au noeud suivant (ici un pointeur). En utilisant ce concept, pour rajouter un élément, il suffit d'allouer un nouveau noeud puis d'y copier la valeur (je passe les détails de chainage). Pour la suppression, toujours aussi simple, tu dé-références le noeud et tu libères simplement le noeud.
Il existe aussi des listes doublement chainée (pointeur sur les noeuds précédent et suivant) qui permettent encore d'améliorer les performances.
14 nov. 2002 à 23:11
14 nov. 2002 à 21:37
Un détail: il ne sera pas plus simple d'avoir une fonction pour libérer toute la liste comme :
void FreeList(struct cHead *pHeader)
{
struct cNode *pNode=pHeader->pFirst;
struct cNode *tmpNode;
while (pNode)
{
tmpNode=pNode->pNext;
FreeNode(pNode);
pNode=tmpNode;
}
FreeHeader(pHeader);
}
14 nov. 2002 à 21:08
@+ et bonne Prog