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 Chainée [DS niveau premiere année ingé]


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Par défaut Liste Chainée [DS niveau premiere année ingé]
    Bonjour. Alors voila j'ai bientot un DS [lundi] et j'ai jusque la tout tenté pour me familiariser avec les listes chainées mais il me reste un gros morceau.
    J'ai compris comment les déclarer, comment les remplir (à peu pres). Je sais réaliser une fonction d'ajout en tete et d'ajout en queue.
    Cependant je ne sais pas coder la fonction d'ajout a la bonne place ainsi que répondre au deux derniers exos. Je ne suis pas quelqun qui cherche a avoir les réponses et puis basta mais avoir des réponses me permettrait de comprendre beaucoup mieux les mécanismes.
    Pour le dernier exercice j'ai quelques notions comme la méthode par bloc qui permet un gain en rapidité mais qui stocke des infos inutilement mais ca en reste la .
    Si jamais vous pouviez m'éclaircir sur différents points qui me permmetrait d'avancer a mon ryhtme, voici le DS.



    Merci d'avance

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Par défaut
    je continue a chercher et je pense avoir bon pour la question 2 de l'exercice 2:

    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
    17
    18
    19
    20
    typedef struct date
    {
       int jour;
       int mois;
       int année;
    }t_date;
     
    typedef struct infos
    {
       char titre [50];
       char auteur[25];
       t_date date;
       char style [20];
    }t_infos;
     
    typedef struct chainage
    {
       t_infos infos;
       struct chainage * suiv;
    }t_chainage;
    ainsi cela donnerait pour les questions de l'exo 3:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    FILE *fp;
    t_infos * pt;
    pt=ancre;
     
    fwrite(&(pt->infos),sizeof(t_infos),1,fp);
     
    fread(&(pt->infos),sizeof(t_infos),1,fp);

  3. #3
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 36
    Par défaut
    Salut, je te conseille de te créer une structure contenant les points d'entrées de ta liste chaînee, ainsi que de la chainer "doublement" pour pouvoir la parcourir simplement. par ex ( ma structure de liste chainée crée pour mes propres besoin de gestion d'une main de poker)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    struct CardLinkedList
    {
    	struct card current;
    	struct CardLinkedList* next;
    	struct CardLinkedList* prev;
    };
     
    struct CardLinkedListEntryPoints
    {
    	struct CardLinkedList *first;
    	struct CardLinkedList *last;
    };

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Par défaut
    oula mais meme ca on ne l'a pas vu en cours. Mais ce que j'ai marqué est correct nan?

    De meme je sais faire l'ajout en tete et queue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    t_cell * ajout_tete (t_cell* ancre, t_cell * nouvo)
    {
       /*Valable dans tout les cas*/
       nouvo->suiv=ancre ;
       ancre=nouvo ;
       return ancre ;
    }
    Ajout en queue:

    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
    t_cell * ajout_queue (t_cell* ancre, t_cell * nouvo)
    {
       /*Liste Vide*/
       if(ancre==NULL) 
          ancre=nouvo ;
       /*Si Liste non Vide*/
       else 
       {
          pt=ancre ;
          while(pt->suiv!=NULL)
          {
             pt=pt->suiv;
          }
          pt->suiv=nouvo ;
       }
       return ancre
    Mais pas l'ajout a la bonne place, si quelqun pouvait m'aider svp. Encore une fois je ne demande pas a ce que l'on me fasse mes devoris maisjuste un peu d'aide

  5. #5
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par kichinho
    Mais pas l'ajout a la bonne place, si quelqun pouvait m'aider svp. Encore une fois je ne demande pas a ce que l'on me fasse mes devoris maisjuste un peu d'aide
    Pour ajouter a la bonne place, il suffit:
    * de parcourir la liste chaine jusqu'a trouver l'element deja present devant preceder l'element a ajouter.
    * d'initialiser le champ suiv de l'element a ajouter avec l'adresse contenu dans le champ suiv de l'element precedent l'ajout (tu accroches la fin de la liste a l'element a ajouter)
    * puis de valoriser le champ suiv de l'element precedent l'ajout avec l'adresse de l'element a ajouter (tu accroches le debut de la liste a l'element a ajouter).

    Attention, il faut gerer le cas particulier de la liste precedement vide et du cas d'insertion en debut de liste (dans ce cas la il suffit d'appeler ta fonction ajout_tete

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Par défaut
    oki dsl pour la mise en page du code je ne me souvenais plus. Je vais essayer de l'écrire et je la proposerais pour verifier si elle est bonne.

    Cependant pourrais-tu me dire si ce que j'ai fais au dessus avec les infos utiles et de chainages est correct svp?

Discussions similaires

  1. Bibliothèque de listes chainées
    Par gege2061 dans le forum C
    Réponses: 29
    Dernier message: 17/12/2004, 20h15
  2. copie de liste chainée
    Par tomsoyer dans le forum C++
    Réponses: 15
    Dernier message: 31/08/2004, 18h20
  3. Trie liste chaine
    Par Congru dans le forum C
    Réponses: 2
    Dernier message: 30/03/2004, 19h05
  4. 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