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
Version imprimable
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
on peut t'aider, oui !
Mais bon, montres nous un peu de code.
Code:
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; }
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
tu as des notions sur les elements chainés ? juste pour te dire des choses trop compliquer ainsi que d'aller à l'essentiel....
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:
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:
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!!
c'est peut etre moi qui n'a pas compris... excuses
regarde ca
ya une erreur dans la 6eme ligne du code :Code:
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
En faite, sur la ligne correspondante :
Tu as tab[0] qui est de type : *tabCode:tab [0]=&seq;
car
alors queCode:
1
2 Liste **tab equivalement à : Liste *tab[X] ainsi qu'a Liste tab[X][Y]
Essayes, je pense que ca sera mieux :Code:
1
2 seq est de type Liste **
Code: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:
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