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
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.
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.
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.
Pourrais tu nous donner les corps des fonctions ?
Merci
(c'est plus pour moi, que je comprenne).
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.
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.
presque !
Enfin je te montre comment on m'a expliquer :
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.
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;
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 :
enfin, si biensur, j'ai bien compris ^^...
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)
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.
c'est peut etre moi qui n'a pas compris... excuses
regarde ca
ya une erreur dans la 6eme ligne du code :
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); }
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.
En faite, sur la ligne correspondante :
Tu as tab[0] qui est de type : *tab
Code : Sélectionner tout - Visualiser dans une fenêtre à part tab [0]=&seq;
car
alors que
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]
Essayes, je pense que ca sera mieux :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 seq est de type Liste **
Code : Sélectionner tout - Visualiser dans une fenêtre à part tab [0]=seq;
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager