[C]insere liste chaine dans un tableau
Fermé
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
-
16 juil. 2008 à 20:41
mamiemando Messages postés 33410 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 2 décembre 2024 - 18 juil. 2008 à 14:20
mamiemando Messages postés 33410 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 2 décembre 2024 - 18 juil. 2008 à 14:20
A voir également:
- [C]insere liste chaine dans un tableau
- Liste déroulante excel - Guide
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Chaine tnt gratuite sur mobile - Guide
5 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
16 juil. 2008 à 22:07
16 juil. 2008 à 22:07
Salut,
tab[0] = *seq;
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
16 juil. 2008 à 22:14
16 juil. 2008 à 22:14
Re,
seq c'est un pointeur de pointeurs de type Liste donc *seq c'est un pointeur
**tab est un pointeur de pointeurs de type Liste donc tab[0] est un pointeur de type Liste est on peut écrire aussi *tab pour le 1er élément
*tab ne peux pas contenir l'adresse d'un pointeur de pointeurs comme tu as essayé de le faire
voici un exemple (j'ai remplacé le type Liste avec int
seq c'est un pointeur de pointeurs de type Liste donc *seq c'est un pointeur
**tab est un pointeur de pointeurs de type Liste donc tab[0] est un pointeur de type Liste est on peut écrire aussi *tab pour le 1er élément
*tab ne peux pas contenir l'adresse d'un pointeur de pointeurs comme tu as essayé de le faire
voici un exemple (j'ai remplacé le type Liste avec int
lami20j@debian:~$ cat ccm.c #include<stdio.h> #include<stdlib.h> void GenNseq(int **seq) { int i; int ** tab; tab = (int **) malloc (20 * sizeof(int *)); tab [0]=*seq; printf ("%p - %p\n", tab[0],*seq); } int main() { int **seq; GenNseq(seq); return 0; } lami20j@debian:~$ gcc ccm.c lami20j@debian:~$ ./a.out 0x489d - 0x489d lami20j@debian:~$j'affiche seulement les adresses
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
16 juil. 2008 à 23:30
16 juil. 2008 à 23:30
merci Lami
:)
:)
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
17 juil. 2008 à 00:37
17 juil. 2008 à 00:37
Dans le cas où jai un tableau de liste: chaque element du tableau contient une liste, comment faire pour se pointer vers l'entete de la liste?
merci;
merci;
mamiemando
Messages postés
33410
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
2 décembre 2024
7 808
17 juil. 2008 à 11:53
17 juil. 2008 à 11:53
1) Il faut juste faire un tableau de pointeurs vers des Liste (genre un Liste **). Attention car qui dit malloc dit free et tu as tendance à les oublier, alors que c'est TRÈS important (tu t'es déjà demandé pourquoi quand tu lançais et fermais word 5 fois de suite, la RAM diminuait petit à petit ? :p) :
Ici on alloue un tableau d'int, mais si c'est un tableau de "Liste *" il suffit simplement de remplacer les "int" par "Liste *" :
2) Si tu peux programmer en C++ c'est encore plus facile, c'est comme des legos :
Pour plus de détails sur la méthode en C++
http://www.commentcamarche.net/faq/sujet 11255 introduction a la stl en c standard template library
Bonne chance
#include <stdlib.h> int main(){ unsigned n = 5; int *p = (int *)malloc(n*sizeof(int)); // alloue un tableau de 5 entiers //... // dès que je n'ai plus besoin de la zone allouée je la libère : free(p); return 0; }
Ici on alloue un tableau d'int, mais si c'est un tableau de "Liste *" il suffit simplement de remplacer les "int" par "Liste *" :
#include <stdlib.h> #include "Liste.h" // le header dans lequel la structure Liste est déclarée int main(){ unsigned n = 5; Liste **p = (Liste **)malloc(n*sizeof(Liste *)); // alloue un tableau de 5 pointeurs vers Liste //... // dès que je n'ai plus besoin de la zone allouée je la libère : free(p); return 0; }
2) Si tu peux programmer en C++ c'est encore plus facile, c'est comme des legos :
#include <list> #include <vector> int main(){ std::vector<std::list<int> > mon_tableau_de_liste; // ... // pas de malloc/calloc/... ou de new, dont pas de free ou de delete return 0; }
Pour plus de détails sur la méthode en C++
http://www.commentcamarche.net/faq/sujet 11255 introduction a la stl en c standard template library
Bonne chance
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
17 juil. 2008 à 12:33
17 juil. 2008 à 12:33
Salut Miss,
et tu as tendance à les oublier>
c'était par paresse ;-)
et tu as tendance à les oublier>
c'était par paresse ;-)
mamiemando
Messages postés
33410
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
2 décembre 2024
7 808
18 juil. 2008 à 12:26
18 juil. 2008 à 12:26
à oublier quoi ? j'ai pas compris.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
>
mamiemando
Messages postés
33410
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
2 décembre 2024
18 juil. 2008 à 12:30
18 juil. 2008 à 12:30
Salut,
de liberer la mémoire allouée ;-)
de liberer la mémoire allouée ;-)
mamiemando
Messages postés
33410
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
2 décembre 2024
7 808
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
18 juil. 2008 à 14:20
18 juil. 2008 à 14:20
Il faudra que tu me dises quand la prochaine fois car en général j'essaye d'y faire attention.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
17 juil. 2008 à 13:09
17 juil. 2008 à 13:09
salut Lami, jai un probleme avec cette fonction qui doit extraire le dernier mot d'une phrase donnée en parametre.
Qaund j'execute le programme se plante.
Qaund j'execute le programme se plante.
char* dernier(char *phrase) { char *pointeur; char* copi; char *separateur = { " " }; //char *buff; // buff = (char*)malloc(sizeof(char)) ; // buff =phrase; //strcpy(buff, phrase); pointeur = strtok(phrase, separateur ); while( pointeur != NULL){ copi = pointeur; printf("%s\n", pointeur); pointeur = strtok(NULL, separateur); } printf("-> %s\n", copi);// le dernier mot }