Se connecter / S'enregistrer
Votre question

Liste chainée (3 erreurs)

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
3 Juillet 2010 08:55:55

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

5 Juillet 2010 00:04:26

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+
m
0
l
5 Juillet 2010 00:12:02

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
m
0
l
Contenus similaires
5 Juillet 2010 09:38:19

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 ?
m
0
l
5 Juillet 2010 12:27:55

L'adresse d'une struture et l'adresse du premier élément de cette structure sont identiques.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS