Tu m'as l'air de très bien maitriser les listes chainées en C. Ton code me donne une idée mais l'exercice demande:
Construire en C une liste L à quatre éléments dans le code du programme à l'aide de cons. Testez car(L), car(cdr(L), car(cdr(cdr L)), car(cdr(cdr(cdr L))), en affichant leur résultat.
Donc je dois suivre les spécifications et adapter par rapport à l'énoncé.
car(L) extrait le premier élément de notre liste L
car(cdr(L) extrait le deuxième
car(cdr(cdr L)) extrait le troisième
car(cdr(cdr(cdr L))) extrait le quatrième
Comme en Langage Lisp.
Voilà pourquoi je dois adapter ces spécifications et compléter ce qui m'a été donné comme indice et exemple pour pouvoir réussir à le faire.
typedef struct Doublet {void * car ; struct Doublet * cdr ;} * list ; // la structure de base ; list est un pointeur sur un doublet
#define car(doublet)((doublet)->car)
//macro plutôt que fonction, pour écrire car(x) = ...
#define cdr(doublet) ((doublet)->cdr)
list cons(void *, const list);
// prototype de la fonction cons
...
// Définition de la fonction cons ; elle renvoie un pointeur sur un doublet
list cons(void * elt, const list L)
{ list Cons = malloc(sizeof(struct Doublet));
// alloc mémoire d'un doublet
car(Cons) = elt ;
cdr(Cons) = L ;
return Cons ; }
Et ma difficulté se repose justement au niveau de cette adaptation avec ces indices données pour répondre au besoin de l'exercice.
[^] # Re: liste chainé bon exo
Posté par roger91 . En réponse au message Affichage listes chainées en C. Évalué à 0.
Tu m'as l'air de très bien maitriser les listes chainées en C. Ton code me donne une idée mais l'exercice demande:
Construire en C une liste L à quatre éléments dans le code du programme à l'aide de cons. Testez car(L), car(cdr(L), car(cdr(cdr L)), car(cdr(cdr(cdr L))), en affichant leur résultat.
Donc je dois suivre les spécifications et adapter par rapport à l'énoncé.
car(L) extrait le premier élément de notre liste L
car(cdr(L) extrait le deuxième
car(cdr(cdr L)) extrait le troisième
car(cdr(cdr(cdr L))) extrait le quatrième
Comme en Langage Lisp.
Voilà pourquoi je dois adapter ces spécifications et compléter ce qui m'a été donné comme indice et exemple pour pouvoir réussir à le faire.
Et ma difficulté se repose justement au niveau de cette adaptation avec ces indices données pour répondre au besoin de l'exercice.