Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3090 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Rajout d'une structure

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Rajout d'une structure

n°1933900
dj_titeuf
Posté le 20-10-2009 à 17:44:07  profilanswer
 

Bonjour,
 
J'ai créé jusque là un code consistant à répertorier différents objets, chacun contenu dans un maillon. En clair, voici un petit schéma:
 
http://free0.hiboox.com/vignettes/4309/d5676691efc7f1755702435e5278e6cc.png
 
Jusque là, tout va bien, voici le code correspondant pour le moment:
 

Code :
  1. #include <stdio.h>
  2. typedef struct objet {
  3. int a;
  4. int b;
  5. } un_objet;
  6. typedef struct maillon {
  7. un_objet * infos;
  8. struct maillon * suivant;
  9. } un_maillon;
  10. un_maillon *ajouterElement(un_maillon *le_maillon, un_objet *l_objet) {
  11. un_maillon *nouveau_maillon = malloc(sizeof(un_maillon));
  12. nouveau_maillon->suivant = NULL;
  13. nouveau_maillon->infos = malloc(sizeof(un_objet));
  14. nouveau_maillon->infos->a = l_objet->a;
  15. nouveau_maillon->infos->b = l_objet->b;
  16. if (le_maillon == NULL)
  17.  return nouveau_maillon;
  18. else {
  19.  un_maillon *maillon_courant = le_maillon;
  20.  while (maillon_courant->suivant != NULL)
  21.   maillon_courant = maillon_courant->suivant;
  22.  maillon_courant->suivant = nouveau_maillon;
  23.  return le_maillon;
  24. }
  25. }
  26. int main(void)
  27. {
  28. un_maillon *le_maillon = NULL;
  29. un_objet l_objet = { 12, 56 };
  30. le_maillon = ajouterElement(le_maillon, &l_objet);
  31. printf("%d\t%d", le_maillon->infos->a, le_maillon->infos->b);
  32. return 0;
  33. }


 
Seulement, on m'impose d'inclure dans mon code une structure liste supplémentaire définie ainsi:
 

Code :
  1. struct liste{
  2. un_maillon * premier_maillon;
  3. un_maillon * dernier_maillon;
  4. un_maillon * maillon_courant; // pour se déplacer dans la liste sans perdre la place du premier maillon
  5. };


 
On aurait alors un schéma comme le suivant:
 
http://free0.hiboox.com/vignettes/4309/ab87159b1770f4f96461c764359d2f3d.png
 
J'ai essayé d'implanter au code ci-dessus cette structure et les changements que cela entraîne, mais curieusement, je n'y parvient pas... :(  Pouvez-vous me montrer svp?
 
Merci d'avance! :)  

mood
Publicité
Posté le 20-10-2009 à 17:44:07  profilanswer
 

n°1933928
theshockwa​ve
I work at a firm named Koslow
Posté le 20-10-2009 à 18:50:33  profilanswer
 

dans la mesure où tu n'as la possibilité de parcourir ta liste que dans un sens, as-tu vraiment besoin d'un pointeur sur le dernier maillon ?
 
comment tu fais si tu veux parcourir la même liste deux fois en même temps ? Tu vas rajouter un maillon courant dans ta structure ?
 
Cette structure est obligatoire ? ca me parait vraiment douteux. Le pointeur de dernier maillon peut t'inviter à faire une liste doublement chaînée, mais le maillon courant, je doute vraiment que ce soit une bonne idée


Message édité par theshockwave le 20-10-2009 à 18:51:37

---------------
last.fm
n°1933930
dj_titeuf
Posté le 20-10-2009 à 19:08:08  profilanswer
 

Il ne faut pas que je fasse de liste doublement chaînée. Concernant le maillon courant, voici ce que l'on m'incite à faire:
 
"Etant donné que l’on aura à parcourir la liste de façon itérative pour modifier chacun des objets, il s'agit d’inclure dans la structure liste un pointeur ”courant” permettant de se déplacer dans la liste et de conserver l'emplacement où l’on se trouve."
 
Est-ce plus clair?

n°1934019
Sve@r
Posté le 20-10-2009 à 23:26:50  profilanswer
 

dj_titeuf a écrit :


Seulement, on m'impose d'inclure dans mon code une structure liste supplémentaire définie ainsi:
 

Code :
  1. struct liste{
  2. un_maillon * premier_maillon;
  3. un_maillon * dernier_maillon;
  4. un_maillon * maillon_courant; // pour se déplacer dans la liste sans perdre la place du premier maillon
  5. };



Tiens ? Tout comme je te l'avais conseillé dans ce topic http://forum.hardware.fr/hfr/Progr [...] 5696_1.htm


Message édité par Sve@r le 20-10-2009 à 23:27:03

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Rajout d'une structure

 

Sujets relatifs
récuperer structure sqlStructure table SQL pour une architecture communautaire?
Structure de base de donnée pour comptabilitéFonction qui retourne une structure
[Visual C++] Problème conversion System::String ^ et structurePetit problème de structure / chaine de caractère
[Résolu]Probleme avec des pointeur de structureUtilisation de la structure "case...of' en Pascal
Structure de données pour stocker un coupleinsertion dans structure
Plus de sujets relatifs à : Rajout d'une structure


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR