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 :

Listes chainées


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Par défaut Listes chainées
    hello !!

    j'ai une petite question de conception a vous poser. Je n'ai qu'une petite experience en programmation. J'aimerai savoir si c'est une bonne chose que d'utiliser les listes chainee.

    Dans le programme que je développe, je les utlise tres régulierement. elles srvent a lister, par exemple, le nombre de fichiers créés, etc..

    je ne connais pas vraiment d'alternative à cette technique.

    quel est votre avis ??

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Apres il faut voir ce que tu fais avec tes listes chainées, si tu es sans cesse en train de rajouter, enlever des elements, trier... Une liste chainée est tres pratique.

    Sinon tu peux eventuellement utiliser des tableaux.

  3. #3
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Oui, l'autre technique c'est d'utiliser un tableau de taille fixe si tu sais que le nombre d'elements ne depassera jamais un certain nombre.

    Un début de TAD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #define MAX_ELEMENTS 50
     
    typedef struct {
       struct {
          /* a definir */
       } elements[MAX_ELEMENTS];
       int nb_elements;
    } ma_liste;

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Par défaut
    Oki, merci pour vos reponses !!


    Je pensais qu'il éxxistait d'autres solutions plus obscures et peu connus par les débutants !!

    Une question cependant. Existe t'il un moyen de ne pas déclarer le pointeur sur la premiere structure en global ??

    Cette déclaration est il vraiment a eviter ??

    Merci encore !

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gdpasmini
    Une question cependant. Existe t'il un moyen de ne pas déclarer le pointeur sur la premiere structure en global ??
    Oui.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Par défaut
    Merci pour la reponse !!

    y a til une solution ??

  7. #7
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Tu passes en argument cette fameuse variable (enfin un pointeur)

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gdpasmini
    Merci pour la reponse !!

    y a til une solution ??
    (pseudo-code)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    struct node
    {
       /* link */
       struct node *p_next;
     
       /* data ... */
        T data;
    };
     
     
    struct list
    {
       struct node *p_head;
       struct node *p_tail;
     };
    Toutes les fonctions font référence à un objet de type struct list...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int main ()
    {
       struct list mylist;
     
       list_init(&mylist);
       list_add(&mylist, 123);
     
       /* etc. */
    }
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       list_init(struct list *p_list);
       list_add(struct list *p_list, T data);

  9. #9
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Skyrunner
    Tu passes en argument cette fameuse variable (enfin un pointeur)
    C'est gore...

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Par défaut
    oui un peu... gloup !

    Merci pour le code... mais je crois que je prefere la variable globale !!

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gdpasmini
    oui un peu... gloup !

    Merci pour le code... mais je crois que je prefere la variable globale !!
    Désolé d'avoir essayé de te faire progresser...

    Et si tu as 2 listes, tu fais comment ?

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Par défaut
    Ne te vexe pas, je te remercie pour ton code, vraiment. Mais vu l'avancement de mon programme, je ne pense pas que je vais modifier les déclarations.

    Pour répondre a ta question, je peux déclarer un pointeur en globale pour chaque liste chainée que j'utilise non ? Il suffit juste d'un pointeur globale par liste chainee. C'est pas si moche que ca.. Et surtout, je vois pas quel est l'inconvenient des variables globales..

    Je vais garder ton bout de code sous le coude pour la prochaine fois !!

    Et merci encore !!

  13. #13
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gdpasmini
    Pour répondre a ta question, je peux déclarer un pointeur en globale pour chaque liste chainée que j'utilise non ? Il suffit juste d'un pointeur globale par liste chainee.
    Et dans le code de la liste tu utilises lequel ?

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Par défaut
    Hello !

    Desolé, j'ai pa pu réondre avant. Pour répondre a ta question, a chaque fois que j'utilise une fonction pour une liste particulière, j'utilise le pointeur correspondant. Dans ma fonction, je mets mon pointeur pCurrent = pFirst avec pFirst déclaré en globale. AInsi qd je parcours ma liste ds ma fonction, je commence par la premiere.

    Si je dois supprimer la premiere liste, je repositionne pFirst.

    Pour chaque liste que j'utilise et pour chaque fonction nécéssitant de les parcourir, je positionne un pointeur local comme pCurrent sur le pointeur global de ma liste.

    Je peux donc avoir autant de listes que je le désir. Il faut juste déclarer en globale un pointeur sur la premiere structure de chacune des listes...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 08/02/2005, 23h42
  2. Bibliothèque de listes chainées
    Par gege2061 dans le forum C
    Réponses: 29
    Dernier message: 17/12/2004, 20h15
  3. copie de liste chainée
    Par tomsoyer dans le forum C++
    Réponses: 15
    Dernier message: 31/08/2004, 18h20
  4. Trie liste chaine
    Par Congru dans le forum C
    Réponses: 2
    Dernier message: 30/03/2004, 19h05
  5. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25

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