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 chaînées - initialisation d'une liste


Sujet :

C

  1. #21
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wallace27 Voir le message
    Bonjour,
    Non, une fois suffit. Tu es entré dns le forum comme tu entres dans une pièce, tu as dit bonjour en entrant comme quand tu entres dans une pièce, tu ne redis pas ensuite "bonjour" à chaque fois que tu interviens dans une discussion si ???

    Citation Envoyé par wallace27 Voir le message
    Pour parcourir une liste chaînée du premier au dernier c'est facile, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while courant != NULL
    courant = courant->suivant
    Moui. Ou bien avec un for
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (courant=(*ptPrem); courant != NULL; courant=courant->suivant)
    {
        ... (traitement du courant)...
    }

    Citation Envoyé par wallace27 Voir le message
    Mais comment faire pour parcourir cette même liste dans le sens inverse, c'est-à-dire du dernier (qui vaut NULL) au premier élément de la liste ?
    Tu rajoutes à chaque maillon un pointeur vers le précédent que tu gères dans l'insertion et la suppression. Et tu rajoutes à ton "t_liste" un pointeur vers le dernier élément. Ah zut, c'est vrai que tu n'as pas suivi mes conseils et que tu n'as pas créé de type dédié à la liste elle-même...
    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]

  2. #22
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut
    Dans ce qui m'est demandé à l'examen, je ne dois pas créer de liste dédiée.

  3. #23
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Et bien, comment ferais-tu?

    Tu sais:
    • te mettre au début de la file.
    • voir qui est le suivant.
    • que NULL est le vide qui suit le dernier.
    • changer de place vers un élément que tu connais.


    Je t'ai répondu, mais je ne coderai pas.
    Après tout, c'est ton exercice, pas le mien

    Montre nous ton code, et nous te corrigerons volontiers
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  4. #24
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wallace27 Voir le message
    Dans ce qui m'est demandé à l'examen, je ne dois pas créer de liste dédiée.
    Ca m'étonne. C'est explicitement écrit ? Il est écrit textuellement "voici ce que vous devez utiliser et rien d'autre" ???
    Il ne faut pas confondre "directives/aides/conseils" et "interdits". Si on te dit "vous pouvez faire ceci" rien n'interdit de faire "ceci+cela"...

    Ceci dit tu peux très bien te passer du type "t_liste". Son rôle est d'embarquer dans une seule entité tous les outils dédiés à la gestion de la liste comme le pointeur sur le premier, le nombre d'éléments, le pointeur sur le dernier etc ce qui simplifie ensuite la manipulation (avec une seule variable tu as tous ces outils à disposition). Mais rien n'empêche d'avoir ces éléments de façon individuelle. Tu as créé une variable "ptPrem" contenant le premier élément de ta liste, rien ne t'interdit donc de créer une variable "ptDern" contenant le dernier élément, une variable "nbElem" contenant le nombre d'éléments etc. Simplement faudra ensuite penser à bien passer toutes ces variables aux fonctions de gestion (insertion/suppression/etc)...

    Sinon ben c'est comme le dit Leternel. Tu places un drapeau sur le dernier élément et à chaque itération tu pars du début jusqu'à cet élément marqué en mémorisant bien entendu le courant et celui juste avant. Quand ton courant est arrivé à l'élément marqué du drapeau, tu affiches le précédent puis tu déplaces ton drapeau sur ce précédent et tu recommences la boucle. Et tu arrêtes tout ce micmac quand ton drapeau est arrivé au premier élément...
    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. #25
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Un collègue me signale qu'il y a franchement mieux:

    construire la liste inverse (en insérant en toujours en tête d'une autre liste), et parcourir celle-ci.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  6. #26
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut
    Oui c'est vrai, il faut "inverser" la direction que prennent les pointeurs d'un élément à l'autre de manière à ce qu'on parte du dernier, que le dernier pointe vers l'avant dernier, etc.

    Merci en tout cas !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [LibreOffice][Base de données] Recuperer une liste de tables et une liste de champs d'une table sur LibreOffice & OpenOffice
    Par gerard.sauvage dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 08/04/2014, 12h35
  2. Réponses: 7
    Dernier message: 04/05/2009, 12h24
  3. Réponses: 2
    Dernier message: 29/05/2008, 15h59
  4. Réponses: 2
    Dernier message: 26/05/2007, 17h28
  5. [Debutant]Remplacer une liste de valeur par une liste de val
    Par Sebbo dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 31/03/2006, 12h15

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