Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1497 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [Liste Chainée]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Liste Chainée]

n°1226434
Anormal13
Posté le 19-10-2005 à 17:30:08  profilanswer
 

Bonjour à tous,  
Je voudrais poser une 'tite question sur les listes chainnées et plus particulierement sur l'optimisation.
Je veux pouvoir insérer en ordre croissant deux listes triées chainées dans une autre.Tout cela pour l'instant est assez simple.
J'ai codé une solution avec trois listes triées chainées simple. Mais je me dis aussi que je peux déclarer une structure chainées comme ceci :
 
struct maillon{
         int val;
         struct maillon* next;   //pointeur pour la liste trié (l1+l2)  
         struct maillon* next2; //pointeur pour la premiere liste trié(l1)
         struct maillon* next3; //pointeur pour la seconde liste trié(l2)
}  
 
ainsi on éconnomiserais de la place en mémoire car on ferais qu'une seule liste de la taille de la premiere liste(l1 & l2) au lieu de trois. En fait lors de l'insertion d'un élément  
il faudrait chainée en ordre pour l3 et en ordre pour la liste l2 ou l1.
Et on pourrais afficher l1, l2 et l3 séparement!
Il faut comprendre de ce fait que chaque maillon seras chainée par au moins deux pointeurs!
Je voudrais savoir si il existe un moyen simple de comparer ces deux méthodes au niveau de l'éxécution? En fait je cherche a savoir qu'elle est la meilleur méthode??
 
Merci d'avance,
 
22 v'la l'anormal
 
 
 
 


---------------
Hihi j'suis là ou pas?
mood
Publicité
Posté le 19-10-2005 à 17:30:08  profilanswer
 

n°1226812
Sve@r
Posté le 20-10-2005 à 09:17:55  profilanswer
 

Anormal13 a écrit :

Bonjour à tous,  
Je voudrais poser une 'tite question sur les listes chainnées et plus particulierement sur l'optimisation.
Je veux pouvoir insérer en ordre croissant deux listes triées chainées dans une autre.Tout cela pour l'instant est assez simple.
J'ai codé une solution avec trois listes triées chainées simple. Mais je me dis aussi que je peux déclarer une structure chainées comme ceci :
 
struct maillon{
         int val;
         struct maillon* next;   //pointeur pour la liste trié (l1+l2)  
         struct maillon* next2; //pointeur pour la premiere liste trié(l1)
         struct maillon* next3; //pointeur pour la seconde liste trié(l2)
}  
 
ainsi on éconnomiserais de la place en mémoire car on ferais qu'une seule liste de la taille de la premiere liste(l1 & l2) au lieu de trois. En fait lors de l'insertion d'un élément  
il faudrait chainée en ordre pour l3 et en ordre pour la liste l2 ou l1.
Et on pourrais afficher l1, l2 et l3 séparement!
Il faut comprendre de ce fait que chaque maillon seras chainée par au moins deux pointeurs!
Je voudrais savoir si il existe un moyen simple de comparer ces deux méthodes au niveau de l'éxécution? En fait je cherche a savoir qu'elle est la meilleur méthode??
 
Merci d'avance,
 
22 v'la l'anormal


 
Pas de pb. Tu as absolument raison.
Ton pb est similaire à celui qui veut faire une liste triée sur plusieurs critères. Il met alors autant de pointeur que de critères mais il n'a qu'une seule liste en mémoire.
 
Seul détail: "next", "next1" et "next2" ne sont pas très parlants. Et, il est d'usage de nommer ses structures "s_qqchose" => "s_maillon" au lieu de "maillon".
Et si tu veux pas avoir à mettre le mot "struct" chaque fois que tu déclares un élément de type "struct s_maillon" tu peux même faire un  
typedef struct s_maillon {...} t_maillon;
Après, tu ne travailles plus qu'avec des "t_maillon"


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1228370
Anormal13
Posté le 21-10-2005 à 18:56:11  profilanswer
 

Merci beaucoup pas de souci pour le typedef je connaissais deja!!!
Mais je voudrais savoir quel est la meilleur solution en termede temps d'exécution??
Existe-t-il un moyen de comparer les deux méthodes  facilement!!
Merci d'avance
 
22 v'la l'anormal


---------------
Hihi j'suis là ou pas?
n°1228497
Sve@r
Posté le 21-10-2005 à 22:23:47  profilanswer
 

Anormal13 a écrit :

Merci beaucoup pas de souci pour le typedef je connaissais deja!!!
Mais je voudrais savoir quel est la meilleur solution en termede temps d'exécution??
Existe-t-il un moyen de comparer les deux méthodes  facilement!!
Merci d'avance
 
22 v'la l'anormal


 
A mon avis il n'y a aucune différence en terme de temps.
Que tu aies 3 listes avec un pointeur par liste... ou une seule liste avec 3 ptrs est identique. En final, tu ne manipules à chaque fois que des adresses.  
 
Si tu veux essayer de comparer les deux solutions, tu peux utiliser le profiling avec "gprof"
Il te faut d'abord tout recompiler avec l'option "-pg" et sans l'option "-O"
Ensuite, tu exécutes ton programme comme d'habitude. Cela te génère un fichier appelé "gmon.out" contenant le profil de ton exécution.
Enfin tu utilises la commande "gprof" et celle-ci te décortiquera "gmon.out" pour te donner les temps d'exécution de tes fonctions et leur taux d'occupation par rapport au pgm complet.
 
Plus d'infos ici... http://www.crihan.fr/calcul/tech/doc_ibm/ProfTools


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1228633
el muchach​o
Comfortably Numb
Posté le 22-10-2005 à 10:25:19  profilanswer
 

D'un point de vue de la conception, à perfs égales, c'est presque tjrs mieux d'avoir des structures de données bien réfléchies plutôt que des tableaux de données éparpillées qu'il faut gérer indépendamment.

n°1228659
Emmanuel D​elahaye
C is a sharp tool
Posté le 22-10-2005 à 11:08:15  profilanswer
 

el muchacho a écrit :

D'un point de vue de la conception, à perfs égales, c'est presque tjrs mieux d'avoir des structures de données bien réfléchies plutôt que des tableaux de données éparpillées qu'il faut gérer indépendamment.


Tout à fait d'accord.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1229038
Anormal13
Posté le 23-10-2005 à 15:52:00  profilanswer
 

Oki merci beaucoup pour toutes ces réponses!! Longue vie à vous!!


---------------
Hihi j'suis là ou pas?

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [Liste Chainée]

 

Sujets relatifs
tête de liste chainéeAffectation d'une valeur à un élément d'une liste chainée
Problème liste chainéeprobleme avec liste chainée
Problème de Procedure avec liste chainée et fichierliste chainée et traitemenbts de fichier
Pbs structure en liste chainée et manip de fichierliste chainee dynamique sur plusieurs threads
Pile d'objets en liste chaînée avec persistance des données ???[C] definition d'une liste chainee
Plus de sujets relatifs à : [Liste Chainée]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR