Structure ajustable

Structure ajustable - C - Programmation

Marsh Posté le 21-01-2005 à 18:49:13    

Voilà, j'aimerais savoir si en C il existe une structure ajustable. J'entend par là une structure qui suivant le nombre de champs que l'on aurait besoins ajuste sa taille.
 
Je veux en fait créer un arbre dont les noeuds seront des structures qui n'auront pas forcement le même nombre de fils, alors pour éviter de faire une structure avec 11 champs, je me demandais si il existait un moyen pour avoir une structure ajustable.
 
Merci d'avance.

Reply

Marsh Posté le 21-01-2005 à 18:49:13   

Reply

Marsh Posté le 21-01-2005 à 19:00:27    

il existe les unions.

Reply

Marsh Posté le 21-01-2005 à 19:20:37    

Balflear a écrit :

Voilà, j'aimerais savoir si en C il existe une structure ajustable. J'entend par là une structure qui suivant le nombre de champs que l'on aurait besoins ajuste sa taille.
 
Je veux en fait créer un arbre dont les noeuds seront des structures qui n'auront pas forcement le même nombre de fils, alors pour éviter de faire une structure avec 11 champs, je me demandais si il existait un moyen pour avoir une structure ajustable.
 
Merci d'avance.

Est-ce qu'au moment de la création du noeud tu connais le nombre de fils qu'il aura ?
Si oui tu peux utiliser un tableau de fils qui sera alloué à la création du noeud. Il te faudra aussi une variable donnant le nombre de fils du noeud.
 
Sinon tu peux faire une liste chaînée des fils de chaque noeud mais ça devient horrible. :D
 
Enfin si tu connais le nombre de fils max d'un noeud tu peux toujours utiliser une structure avec un tableau de fils dont la taille est définie au départ. Il y aura un gaspillage de mémoire mais le code sera plus simple et plus rapide.
 
Fait une estimation du nombre moyen de fils par noeud !


Message édité par darkoli le 21-01-2005 à 19:21:21

---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 21-01-2005 à 20:59:50    

sinon tu peux faire une liste chainee tu vois un peut comment faire genre tu cree un ta_struct *var; et tu rajoute un *next dans ta structures.  
Sinon tu peut emuler ton arbres avec un tableau de pointeur vers ta structures. avec les fils qui pointe sur des element de ton tableau mais tout depend de ce que tu veux faire.


---------------
  ____
Reply

Marsh Posté le 22-01-2005 à 03:46:59    

Typiquement les noeud d'un arbre ça se fait avec une structure qui ponte vers le fils ainé et vers le frère cadet. Par exemple pour représenter cet arbre :

  O
 / \
O   O
|  /|\
O O O O


Ca donnerait, en terme de pointeurs :

O
|
O-O
| |
O O-O-O


Message édité par matafan le 22-01-2005 à 03:49:47
Reply

Marsh Posté le 22-01-2005 à 12:13:07    

darkoli a écrit :

Est-ce qu'au moment de la création du noeud tu connais le nombre de fils qu'il aura ?
Si oui tu peux utiliser un tableau de fils qui sera alloué à la création du noeud. Il te faudra aussi une variable donnant le nombre de fils du noeud.
 
Sinon tu peux faire une liste chaînée des fils de chaque noeud mais ça devient horrible. :D
 
Enfin si tu connais le nombre de fils max d'un noeud tu peux toujours utiliser une structure avec un tableau de fils dont la taille est définie au départ. Il y aura un gaspillage de mémoire mais le code sera plus simple et plus rapide.
 
Fait une estimation du nombre moyen de fils par noeud !


 
En fait, je sais que le nombre de fils maximum est de 11, mais mon intérêt n'est pas forcement l'optimisation au niveau de la mémoire.
Je pense donc utiliser une structure fixe.
 
Bon, la liste chaînée, je comptais pas le faire comme ça: c'est horrible et pour le parcours, c'est vraiment pas évident.
 
Ou alors, j'envisage d'utiliser ta première proposition qui me semble possible dans mon cas, car je peux connaître à l'avance combien de fils aura mon noeud.
 
En tout cas, merci à tous  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed