Bonjour,
J'essaie de coder une liste chainée dont la valeur à stockée est matérialisé par un
pointeur sur void de façon rendre mon code générique:
typedef void* PVOID; //définit un pointeur générique
typedef struct{
PVOID data; //pointeur générique
struct ELEMENT *next;//pointe sur l'élément suivant
struct ELEMENT *prev;//pointe sur l'élément précédent
} ELEMENT;
typedef ELEMENT* PELEMENT; //définit un pointeur sur une structure ELEMENT
typedef struct{
PELEMENT head; //pointe sur le 1er élément
PELEMENT tail; //pointe sur le dernier élément
PELEMENT curr; //pointe sur l'élément courant
UINT nbElem; //nombre d'éléments dans la liste
} LIST;
//Fonctions relatives à la gestion de la liste add, remove etc......
// code.............
Supposons que je veuille créer une liste chainée qui manipulerait des int.
Imaginons que la fonction addElem(PVOID data) ajoute un nouvel élément à la liste
et y stocke la valeur 'data' (donc un int dans mon cas).
Comment faire pour passer ma valeur à placer dans la liste ?
Y a bien ça:
int a = 25;
addElem(&25);
mais ça n'a aucun interêt puisqu'il faut créer une variable int pour chaque élément
de la liste.
Ce que j'aimerais faire c'est une utilisation simple du genre:
addElem(25);
mais bien sûr ça ne peut pas marcher.
Aussi, j'aimerais savoir quel est la méthode pour utiliser des liste chainée génériques.
(j'ai regardé comment était conçues les listes dans GTK+ mais j'ai pas tout compris)
Merci d'avance
Tintin 72