hi,
je dois transformer une liste chainé en tableau, et le prototype de la fonction qui fait ça m'est imposé.
Code :
- int VersTableau(struct wagon *l, long **t)
|
elle retourne la taille du tableau, comme vous pouvez vous en douter wagon est la tete de liste, et ce qui m'embette c'est l'**tab
ça me permet de recuperer l'adresse du tableay que je vais creer, mais j'arette pas de m'embrouiller
donc en gros je veux faire ça je pense :
le problemme est, comment l'ecrire?
voila mon main :
Code :
- int main(void)
- {
- long length = 0;
- long tab[] = {12,587,164,187,487,4154};
- long **tablo;
- struct wagon *chaine = NULL;
- length = sizeof(tab)/4; //retourbne le nb d'octet que fait tab, donc div par 4
- chaine = VersListeSL(tab, length);
- AfficheLSC(chaine);
-
- //conversion de la chaine en tableau
- versTableau(chaine, tablo);
- system("pause" );
- }
|
et voici la fonction :
Code :
- long versTableau(struct wagon *l, long **t)
- {
- //renvoi la taille du tab on passe la liste et un pointeur vers un pointeur de tableau
-
- //calculer la taille de la liste
- //:stocker cette taille
- //creer le tableau
- //remplir le tableau
- //revoyer la taille
- long length = 0;
- long counter = 0;
- struct wagon *first = NULL;
- first = l;//on sauvgarde le debut de la liste
- while(l->suiv !=NULL) //on quitte la boucle a l'avant dernier wagon
- {
- counter++;
- l = l->suiv;
- }
- counter++;
- length = counter;
- *t = new long[counter];
-
- l = first;
- counter =0;
- while(l->suiv != NULL)
- {
- system("pause" );
- *t[counter] = l->data;
- counter++;
- l = l->suiv;
- }
- *t[counter] = l->data; //comme avant, un wagon avant
- system("pause" );
- return(length);
- }
|
ça bug au moment du new
merci
Message édité par sliders_alpha le 11-11-2010 à 11:29:22