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.