Le hiatus pour moi: est-ce que car() retourne le Doublet (le nœud de stockage, qui est un élément de la liste), ou bien la valeur elt stockée dans le Doublet.
Il me semble qu'il devrait retourner la valeur. Donc à ce moment en C tu ne peux plus écrire car(Cons)->elt car tu as déjà directement elt.
listcdr(listlst){returnlst->cdr;}// int ou autre type stocké comme valeur pour elt - tu peux même en faire// un typedef int Atom; et utiliser Atom pour le type des valeurs de elt.intcar(listlst){returnlst->elt;}
Tu peux faire ça avec des #define si tu veux.
En tout cas, tu peux après faire des car(cdr(cdr(lst))). Par contre, à moins que tu n'autorises le stockage de Doublet dans ton elt, tu ne peux pas faire de car(cdr(car(lst))) (ce qui correspondrait à stocker non pas des listes simples d'éléments atomiques, mais des listes de listes... pour créer par exemple des structures en arbres).
Après, pour ton cons, c'est juste de la création de structure en mémoire, et l'insertion en début de liste (le Doulet créé devient la tête de liste).
listcons(intelt,constlistL){Doubledbl=malloc(sizeof(structDoublet));dbl->elt=elt;// Stockage de l'élementdbl->cdr=L;// Mise en place de la liaison pour la listereturn(list)dbl;}
Bon, à l'usage tel quel ça promet de jolies fuites mémoires.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Retour papier
Posté par lolop (site web personnel) . En réponse au message Affichage listes chainées en C. Évalué à 2.
Le hiatus pour moi: est-ce que car() retourne le Doublet (le nœud de stockage, qui est un élément de la liste), ou bien la valeur
eltstockée dans le Doublet.Il me semble qu'il devrait retourner la valeur. Donc à ce moment en C tu ne peux plus écrire car(Cons)->elt car tu as déjà directement elt.
https://www.google.fr/search?q=lisp+car+lang:fr
Ce qui donnerais
Tu peux faire ça avec des
#definesi tu veux.En tout cas, tu peux après faire des
car(cdr(cdr(lst))). Par contre, à moins que tu n'autorises le stockage deDoubletdans tonelt, tu ne peux pas faire decar(cdr(car(lst)))(ce qui correspondrait à stocker non pas des listes simples d'éléments atomiques, mais des listes de listes... pour créer par exemple des structures en arbres).Après, pour ton
cons, c'est juste de la création de structure en mémoire, et l'insertion en début de liste (leDouletcréé devient la tête de liste).Bon, à l'usage tel quel ça promet de jolies fuites mémoires.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN