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 des listes


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Par défaut liste des listes
    peut-on creer une liste des listes chainées et comment peut-on faire ?

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par naniate Voir le message
    peut-on creer une liste des listes chainées
    On peut faire des listes de tout...
    Citation Envoyé par naniate Voir le message
    et comment peut-on faire ?
    Déjà commencer par bien poser le truc parce que sinon ça peut vite partir en torche. Donc bien identifier ses différents éléments. Un élément pour manipuler une liste, un élément pour manipuler un membre de la liste etc.
    Puis identifier ses différentes opérations. Une opération pour créer un membre, une opération pour insérer le membre dans la liste etc.
    Plus on travaille modulaire et structuré en amont plus on a des chances d'écrire un code simple, sans bug et de l'écrire facilement. Mais j'ajouterais que c'est pas vraiment un truc à la portée du débutant...

    PS: En dehors de l'exercice de style qu'on écrit pour se faire plaisir, le concept de liste chaînée ne se justifie que si il y a derrière une notion de tri et de conservation de l'ordonnancement. Ainsi, avec une liste chaînée, le nouvel élément pourra être facilement inséré à sa bonne place alors que c'est plus difficile (mais pas impossible) avec un tableau.
    Mais si la notion d'ordre n'existe pas, alors la liste chaînée n'a plus de raison d'être et il est préférable de la remplacer par un tableau dynamique. Chaque nouvel élément viendra s'ajouter en fin de tableau qui sera réagrandi au besoin. On supprime ainsi les problèmes liés aux algorithmes de manipulation de liste et on peut utiliser en plus des outils de manipulation de tableau (comme le pointeur sur le premier élément qui s'incrémente par exemple).
    Donc je conçois bien une liste chaînée pour manipuler des personnes (un carnet d'adresse), des mots (un dictionnaire), des fichiers (un répertoire) où on peut inclure une notion d'ordre relatif (tel mot est placé avant tel autre) mais je m'imagine mal d'utiliser des listes chaînées pour manipuler un ensemble de listes chaînées (comment dire que telle liste sera avant telle autre). Mais bon, je peu pas non plus tout savoir sur les besoins des uns et des autres. C'était juste une petite réflexion personnelle que je voulais faire partager...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Mais si la notion d'ordre n'existe pas, alors la liste chaînée n'a plus de raison d'être et il est préférable de la remplacer par un tableau dynamique.
    d'acccord avec le reste, mais pas avec ça...

    A cause des non-libérations réelles de free, et si tu as une appli roulant 24/24, tu peux crasher ton système avec des realloc de tableaux, pour peu que tes tableaux varient beaucoup en taille...

    (ça m'est arrivé, alors je connais le pbe )

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    d'acccord avec le reste, mais pas avec ça...
    A cause des non-libérations réelles de free, et si tu as une appli roulant 24/24, tu peux crasher ton système avec des realloc de tableaux, pour peu que tes tableaux varient beaucoup en taille...
    Effectivement, puisqu'il faut que le système recopie dans le nouveau tableau l'ensemble du précédent, le realloc peut entraîner parfois l'utilisation de 2 fois plus de mémoire qu'il n'est réellement demandé. J'avais pas pensé à ça.

    Citation Envoyé par souviron34 Voir le message
    (ça m'est arrivé, alors je connais le pbe )
    C'est toujours bon d'avoir des retours d'expérience.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Effectivement, puisqu'il faut que le système recopie dans le nouveau tableau l'ensemble du précédent, le realloc peut entraîner parfois l'utilisation de 2 fois plus de mémoire qu'il n'est réellement demandé. J'avais pas pensé à ça.
    ben c'est surtout que c'est pas 2, c'est N....

    Admettons que ton tableau puisse à certains moments contenir 5 données, puis 1000, puis 60, puis 100000, puis 40, etc...

    Bien entendu () ce n'et pas la seulle allocation que tu fais.. Lorsque la réallocation est plus petite, pas de problèmes... Mais comme entre le moment où tu es passé de 1000 à 60 et celui où tu vas passer de 60 à 100000, tu as alloué et fais pleins d'autres choses, le tableau se mettra à la fin, et donc cela ne FAIT QUE CROITRE.... alors que la vraie plage mémoire de ton prog est remplie de trous....

    Donc, en résumé :

    • si tu connais la dimension max , tu l'assignes dès le départ
    • si tu ne la connais pas, mais que il y a peu de données possibles, alloc dynamique
    • si tu ne la connais pas, mais que le prog roulera peu de temps, (et que l'alloc est pas ds une boucle), alloc dynamique
    • si tu ne la connais pas, mais que les variations seront faibles (sans autres allocs au milieu), alloc dynamique
    • si tu ne la connais pas, mais variations importantes, runtime long, allocs mélangées, liste chainée..


    (Et note bien que dans mon cas particulier, il y avait une notion d'ordre (qui pour moi était vitale et facile à utiliser avec un tableau (gràce aux indices)), et que j'ai dû remplacer par une "optimisation" un peu obscure, où pour garder mes indices je stockais l'adresse de certains éléments de la liste chaînée : totalement à déconseiller, mais la seule solution à mon problème.. : parcourir une liste de plus de 100 000 points, plusieurs fois par secondes, et avoir un temps de réponse correct, alors que ce qui m'intéresse est 6 petites plages d'"indices" dans ces 100000 points)

Discussions similaires

  1. Liste des listes de matrice en C#
    Par emna hakem dans le forum Débuter
    Réponses: 11
    Dernier message: 21/01/2011, 09h11
  2. [WD-2007] Numérotation imbriquée des listes des figures
    Par TheBlue dans le forum Word
    Réponses: 3
    Dernier message: 07/09/2010, 00h03
  3. Mapper des listes de listes
    Par minimarch76 dans le forum Hibernate
    Réponses: 4
    Dernier message: 31/01/2008, 09h05
  4. Réponses: 7
    Dernier message: 06/08/2007, 14h34

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