Se connecter avec
S'enregistrer | Connectez-vous

Liste chainée (3 erreurs)

Dernière réponse : dans Programmation

bonjour a tous, dans le but d'une meilleur compréhension sur les listes chainée j'ai fais un script qui affiche des valeurs que j'ai defini auparavant (dans la fonction initialisation)
toutefois j'ai 3 erreurs

tout d'abord voici mon code

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct Element Element;
  5. struct Element
  6. {
  7. int n1;
  8. Element *suivant;
  9. };
  10.  
  11. typedef struct Liste Liste;
  12. struct Liste
  13. {
  14. Element *premier;
  15. };
  16.  
  17. Liste *initialisation(void)
  18. {
  19. Liste *liste = malloc(sizeof(*liste));
  20. Element *element = malloc(sizeof(*element));
  21.  
  22. if (liste == NULL || element == NULL)
  23. {
  24.  
  25. exit (EXIT_FAILURE);
  26. }
  27.  
  28. (*element).n1 = 30;
  29. (*element).suivant = NULL;
  30. (*liste).premier = element;
  31.  
  32. return liste;
  33.  
  34. }
  35.  
  36. int main(void)
  37. {
  38. Element *element1 = NULL;
  39. Liste *recuperation = initialisation();
  40. printf ("affichage de l'adresse de liste %p \n\n", recuperation);
  41.  
  42. printf("adresse du premier element %p \n\n", recuperation.premier);
  43.  
  44. element1 = recuperation.premier;
  45.  
  46. printf ("affichage du contenu %d\n\n", element1.n1);
  47.  
  48.  
  49. return 0;
  50. }


les erreurs sont a la ligne 42, 44, 46

et je ne comprend pas pourquoi il y a ces erreurs car pour moi cela me semble correct

PS : merci d'avance pour votre aide

Autres pages sur : liste chainee erreurs

Lassé par la pub ? Créez un compte

Bonjour :) ,

wahhh a dit :

printf("adresse du premier element %p \n\n", recuperation.premier);


Attention, tu as crée le pointeur "recuperation".
Il faut d'abord accéder à la valeur de ta structure pour accéder aux adresses des valeurs de son contenu (si je ne me plante pas XD)
Dans ce cas, pour accéder à l'adresse de "premier", il faut faire:
  1. printf("adresse du premier element %p \n\n", recuperation->premier);


Même raisonnement pour les autres erreurs.

  1. element1 = recuperation->premier;
  2. printf ("affichage du contenu %d\n\n", element1->n1);


Remarque:

  1. (*element).n1

est équivalent à
  1. element->n1


A+

oui c'est vrai, j'avais completement oublié que c 'etait un pointeur et que pour acceder au sous variable et donc aux valeurs il faut bien faire recuperation->premier, ce pointeur je l'ai pris pour une simple variable avec un type personalisé, je pensais qu'on acceder de la meme façon mais en faite non ^^ merci

une derniere question,
pour accedé a la valeur de la sous variable premier je fais (*recuperation).premier) sa sa marche mais quand je veux acceder a l'adresse de la sous variable il m renvoit l'adresse ce que contient recuperation, comment je fais pour avoir l'adresse de la sous variable ?
Lassé par la pub ? Créez un compte
Tom's guide dans le monde