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 :

tableau de liste


Sujet :

C

  1. #1
    Débutant Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Points : 117
    Points
    117
    Par défaut tableau de liste
    Bonjour,
    Je souhaiterai allouer dynamiquement de la mémoire un tableau, dans le quel je voudarais stocker les listes chaineés.
    Dans chaque element , onstocke une liste chainée.
    vous pouvez m'aider?
    merci
    Le jour est le père du labeur et la nuit est la mère des pensées.

  2. #2
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    on peut t'aider, oui !

    Mais bon, montres nous un peu de code.

  3. #3
    Débutant Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par Flob91 Voir le message
    on peut t'aider, oui !

    Mais bon, montres nous un peu de code.
    merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void stockerListe(Liste **seq)
    {int i;
         Liste ** tab;
        tab = (Liste **) malloc (20 * sizeof(Liste *));
      for(i=0;i<20;++i) //  Initialisation des
        tab[i] = NULL; 
        tab [1]=*seq;
        printf ("%s", *tab[1]);
    }
    Le jour est le père du labeur et la nuit est la mère des pensées.

  4. #4
    Débutant Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par cyrine Voir le message
    merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void stockerListe(Liste **seq)
    {int i;
         Liste ** tab;
        tab = (Liste **) malloc (20 * sizeof(Liste *));
      for(i=0;i<20;++i) //  Initialisation des
        tab[i] = NULL; 
        tab [1]=*seq;
        printf ("%s", *tab[1]);
    }
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <errno.h>
    #include <ctype.h>
     
    #include "table_hash.h"
    #define TAILLEHASH 307
     
     
    int main(void)
    {//géneration des 2seq
    	  Liste *seq=NULL;
    	  Generer2seq(TableHash, 2, &seq);
    	  printf("\nla liste des 2seq :\n----------------------------------\n");
    	  AfficherListe(seq);
    	  //printf("Chercher mot : ");
    	  //scanf("%s",mot);
    	  //if(cle = ChercherMotDansTableHash(TableHash,mot))
    	  //  printf("%s existant dans le conteneur %u\n",mot,hash_cle(mot));
    	  //else
    	  //  printf("%s inexistant dans la table de hash\n");
    	  //scanf("%c",c);
     
    	  // elagage des séquence
    	AfficherTableHash(TableHash);
     
    	elaguer2seq(seq, TableHash);
    	printf ("la liste des séquence elagues");
    	AfficherTableHash(TableHash);
    GenNseq(&seq);
     
    	  //printf("%i", a);
      }
      //}
      else printf("Le fichier texte n'existe pas");
     system("pause");
     
      return 0;
     
    }
    Le jour est le père du labeur et la nuit est la mère des pensées.

  5. #5
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    Pourrais tu nous donner les corps des fonctions ?
    Merci

    (c'est plus pour moi, que je comprenne).

  6. #6
    Débutant Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par Flob91 Voir le message
    Pourrais tu nous donner les corps des fonctions ?
    Merci

    (c'est plus pour moi, que je comprenne).
    c'un trop grand projet, je peux pas afficher tout le code là.
    mais juste pourriez vous me montrer comment faire por stocker une liste chainée dans un tableau de liste.
    merci
    Le jour est le père du labeur et la nuit est la mère des pensées.

  7. #7
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    en faite, en gros, tu as plusieurs listes chainées (du meme type).
    tu veux y avoir accès via un tableau où tu les auras toutes repertoriée, c'est ca ?

  8. #8
    Débutant Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par Flob91 Voir le message
    en faite, en gros, tu as plusieurs listes chainées (du meme type).
    tu veux y avoir accès via un tableau où tu les auras toutes repertoriée, c'est ca ?
    regarde, voila en gros
    jai une liste qui contient des mots je voudrais la stocker dans le 1er element du tableau,
    apres sur cette meme liste je vais generer d'autre liste (avec une fonction deja developpe) due voudrais la stocker dans le 2emem element du tableau. ainsi de suite.
    merci
    Le jour est le père du labeur et la nuit est la mère des pensées.

  9. #9
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    tu as des notions sur les elements chainés ? juste pour te dire des choses trop compliquer ainsi que d'aller à l'essentiel....

  10. #10
    Débutant Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par Flob91 Voir le message
    tu as des notions sur les elements chainés ? juste pour te dire des choses trop compliquer ainsi que d'aller à l'essentiel....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Liste *seq=NULL;
    typedef struct c{
    	int pos;
    	int nl;
    	struct c *suivant;
    }Coordonnees;
     
    typedef struct L{
    	char mot[50];
    	Coordonnees *c;
    	struct L *suivant;
    }Liste;
    Le jour est le père du labeur et la nuit est la mère des pensées.

  11. #11
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    presque !

    Enfin je te montre comment on m'a expliquer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
     
    typedef struct {
    	char mot[50];
            ...
    	struct Liste *suivant;
    }Liste;
     
    typedef struct {
    	Liste *First;
    	Liste *Current;
    	Liste *Last;
    } Tete;
    tu as une structure de tête contenant le pointeur du premier élément, le dernier et le courant. dans chaque élément, tu as les variables puis un pointeur sur le maillon suivant.

    ensuite, si j'ai bien compris ce que tu voulais faire.

    Il te suffit de faire un tableau dont le type est celui de Tete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Tete *tableau[X];
    Tete principale;
     
    --- création de la chaine comme tu veux ---
     
    puis : 
     
    tableau[0] = &principale;
     
    pour y acceder : 
     
    printf("%s",tableau[0]->First->mot)
    enfin, si biensur, j'ai bien compris ^^...

  12. #12
    Débutant Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par Flob91 Voir le message
    presque !

    Enfin je te montre comment on m'a expliquer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
     
    typedef struct {
    	char mot[50];
            ...
    	struct Liste *suivant;
    }Liste;
     
    typedef struct {
    	Liste *First;
    	Liste *Current;
    	Liste *Last;
    } Tete;
    tu as une structure de tête contenant le pointeur du premier élément, le dernier et le courant. dans chaque élément, tu as les variables puis un pointeur sur le maillon suivant.

    ensuite, si j'ai bien compris ce que tu voulais faire.

    Il te suffit de faire un tableau dont le type est celui de Tete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Tete *tableau[X];
    Tete principale;
     
    --- création de la chaine comme tu veux ---
     
    puis : 
     
    tableau[0] = &principale;
     
    pour y acceder : 
     
    printf("%s",tableau[0]->First->mot)
    enfin, si biensur, j'ai bien compris ^^...
    qui ta fait compri tout ca!!!!
    Le jour est le père du labeur et la nuit est la mère des pensées.

  13. #13
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    Citation Envoyé par cyrine Voir le message
    jai une liste qui contient des mots je voudrais la stocker dans le 1er element du tableau,
    apres sur cette meme liste je vais generer d'autre liste (avec une fonction deja developpe) due voudrais la stocker dans le 2emem element du tableau. ainsi de suite.
    merci

  14. #14
    Débutant Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Points : 117
    Points
    117
    Par défaut


    MERCI fLOB,
    mais sincerememnt jai rien compri de ce que tu as fait, c trop complique!!
    Le jour est le père du labeur et la nuit est la mère des pensées.

  15. #15
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    c'est peut etre moi qui n'a pas compris... excuses

  16. #16
    Débutant Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par Flob91 Voir le message
    c'est peut etre moi qui n'a pas compris... excuses
    non c pas grave, au contraire c moi qui doit te remercier fort, car tu as lu mon post et tu as essayé de m'aider.
    Le jour est le père du labeur et la nuit est la mère des pensées.

  17. #17
    Débutant Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Points : 117
    Points
    117
    Par défaut
    regarde ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void GenNseq(Liste **seq)
    {int i;
    char *mot;
         Liste ** tab;
        tab = (Liste **) malloc (20 * sizeof(Liste *));
          tab [0]=&seq;
        printf ("%s", *tab[0]->mot);
    }
    ya une erreur dans la 6eme ligne du code :
    cannot convert `Liste**' to `Liste*' in assignment
    Le jour est le père du labeur et la nuit est la mère des pensées.

  18. #18
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    Citation Envoyé par cyrine Voir le message
    regarde ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void GenNseq(Liste **seq)
    {int i;
    char *mot;
         Liste ** tab;
        tab = (Liste **) malloc (20 * sizeof(Liste *));
          tab [0]=&seq;
        printf ("%s", *tab[0]->mot);
    }
    ya une erreur dans la 6eme ligne du code :
    cannot convert `Liste**' to `Liste*' in assignment

    En faite, sur la ligne correspondante :
    Tu as tab[0] qui est de type : *tab
    car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Liste **tab  equivalement à : Liste *tab[X] ainsi qu'a Liste tab[X][Y]
    alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    seq est de type Liste **
    Essayes, je pense que ca sera mieux :

  19. #19
    Débutant Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par Flob91 Voir le message
    En faite, sur la ligne correspondante :
    Tu as tab[0] qui est de type : *tab
    car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Liste **tab  equivalement à : Liste *tab[X] ainsi qu'a Liste tab[X][Y]
    alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    seq est de type Liste **
    Essayes, je pense que ca sera mieux :
    la même chose
    Le jour est le père du labeur et la nuit est la mère des pensées.

  20. #20
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    le probleme est que seq (qui est une Liste**) a une '*' de trop pour pouvoir rentrer dans une Liste*

    de base, seq et tab sont de meme type ( tu es d'accord sur ce point).
    Le faite de rajouter les braqueck ([]) fait que la variable attentue sera de Liste* et non Liste**

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Liste* seq;
    Liste** tab;
     
    tab[0] = seq;  // Ok
     
    --------------
     
    Liste ** seq;
    Liste** tab;
     
    tab[0] = seq[0];  // Ok
    tab[0] = seq //( Liste* <= Liste**) // Nok

Discussions similaires

  1. [C# .NET2] tableau de List<T>
    Par gdkenny dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/04/2006, 09h10
  2. Réponses: 3
    Dernier message: 24/04/2006, 19h56
  3. [Tableaux] tableau vers liste deroulane
    Par flydragon dans le forum Langage
    Réponses: 5
    Dernier message: 12/04/2006, 16h11
  4. Pb tableau de listes chainées
    Par Beush dans le forum C
    Réponses: 4
    Dernier message: 24/11/2005, 15h43
  5. declaration d'un tableau de listes
    Par flah06 dans le forum C++
    Réponses: 1
    Dernier message: 15/11/2005, 18h16

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