Ma question demeure, ListNodePtr *sPtr, déréférence quoi?
Et ceci ne ressemble pas non plus à la question de départ qui avait une écriture bizarre genre mafonction(*ListNodePtr). D'où la notion de gag soulignée par Pierre Maurette, en plus de souligner l'absence de toute forme de politesse genre bonjour, merci... :-)
Pour ce qui est de la question, en gros c'est une liste chainée. Une structure ListNode contient une valeur, représentée par le char data et une pointeur sur son suivant. Au dessus de ceci est défini un autre type, ListNodePtr, qui est en fait un pointeur sur une structure ListNode et ce avec le deuxième typedef. Un ListNodePtr*, qui est le type de sPtr, est donc un pointeur sur un pointeur sur une struct ListNode, donc une struct ListNode**.
Je n'ai pas compris à quel point ce code était dérangeant et donc je n'ai pas vraiment compris la question qui est assez vague, mais pour comprendre l'intêret de ce struct ListNode**, il faut voir comment on insère dans la liste chainée. En clair, ce qu'on envoie à la fonction InsertItem() c'est l'adresse du Pointeur de départ (startPtr) sur une ListNode. Ceci te donne à tout moment le premier élement de ta liste chainée, qui te permettra de la parcourir. Là InsertItem recoit un pointeur sur cet élement de départ pour le modifier. En clair quand tu vas insérer un nouveau noeud dans ta liste, tu vas créer ce noeud avec malloc() puis tu vas dire le suivant du noeud que je viens de créer c'est le pointeur de départ que j'ai recu, donc l'ancien début de ma liste et ensuite je vais changer le début de ma liste pour qu'il devienne l'élement que j'ai créé avec malloc. En gros tu inclus ton élement au début de ta liste, car c'est le plus simple.
Ton début de liste étant un pointeur sur une structure ListNode, tu vas recevoir un pointeur sur pointeur de ListNode pour modifier le début de la liste.
Donc ListNodePtr* déréférence un pointeur sur une ListNode, donc est un ListNode**. Cette réponse me parait un peu simple et je ne vosi pas trop où était le problème, donc je ne suis pas sûr d'avoir répondu à la question, mais j'espère avoir été clair !
Anthony -- Alan Turing thought about criteria to settle the question of whether machines can think, a question of which we now know that it is about as relevant as the question of whether submarines can swim. -- Dijkstra
Ma question demeure,
ListNodePtr *sPtr, déréférence quoi?
Et ceci ne ressemble pas non plus à la question de départ qui avait une
écriture bizarre genre mafonction(*ListNodePtr).
D'où la notion de gag soulignée par Pierre Maurette, en plus de souligner
l'absence de toute forme de politesse genre bonjour, merci... :-)
Pour ce qui est de la question, en gros c'est une liste chainée. Une
structure ListNode contient une valeur, représentée par le char data et une
pointeur sur son suivant.
Au dessus de ceci est défini un autre type, ListNodePtr, qui est en fait un
pointeur sur une structure ListNode et ce avec le deuxième typedef.
Un ListNodePtr*, qui est le type de sPtr, est donc un pointeur sur un
pointeur sur une struct ListNode, donc une struct ListNode**.
Je n'ai pas compris à quel point ce code était dérangeant et donc je n'ai
pas vraiment compris la question qui est assez vague, mais pour comprendre
l'intêret de ce struct ListNode**, il faut voir comment on insère dans la
liste chainée. En clair, ce qu'on envoie à la fonction InsertItem() c'est
l'adresse du Pointeur de départ (startPtr) sur une ListNode. Ceci te donne
à tout moment le premier élement de ta liste chainée, qui te permettra de
la parcourir. Là InsertItem recoit un pointeur sur cet élement de départ
pour le modifier. En clair quand tu vas insérer un nouveau noeud dans ta
liste, tu vas créer ce noeud avec malloc() puis tu vas dire le suivant du
noeud que je viens de créer c'est le pointeur de départ que j'ai recu, donc
l'ancien début de ma liste et ensuite je vais changer le début de ma liste
pour qu'il devienne l'élement que j'ai créé avec malloc. En gros tu inclus
ton élement au début de ta liste, car c'est le plus simple.
Ton début de liste étant un pointeur sur une structure ListNode, tu vas
recevoir un pointeur sur pointeur de ListNode pour modifier le début de la
liste.
Donc ListNodePtr* déréférence un pointeur sur une ListNode, donc est un
ListNode**. Cette réponse me parait un peu simple et je ne vosi pas trop où
était le problème, donc je ne suis pas sûr d'avoir répondu à la question,
mais j'espère avoir été clair !
Anthony
--
Alan Turing thought about criteria to settle the question of whether
machines can think, a question of which we now know that it is about as
relevant as the question of whether submarines can swim.
-- Dijkstra
Ma question demeure, ListNodePtr *sPtr, déréférence quoi?
Et ceci ne ressemble pas non plus à la question de départ qui avait une écriture bizarre genre mafonction(*ListNodePtr). D'où la notion de gag soulignée par Pierre Maurette, en plus de souligner l'absence de toute forme de politesse genre bonjour, merci... :-)
Pour ce qui est de la question, en gros c'est une liste chainée. Une structure ListNode contient une valeur, représentée par le char data et une pointeur sur son suivant. Au dessus de ceci est défini un autre type, ListNodePtr, qui est en fait un pointeur sur une structure ListNode et ce avec le deuxième typedef. Un ListNodePtr*, qui est le type de sPtr, est donc un pointeur sur un pointeur sur une struct ListNode, donc une struct ListNode**.
Je n'ai pas compris à quel point ce code était dérangeant et donc je n'ai pas vraiment compris la question qui est assez vague, mais pour comprendre l'intêret de ce struct ListNode**, il faut voir comment on insère dans la liste chainée. En clair, ce qu'on envoie à la fonction InsertItem() c'est l'adresse du Pointeur de départ (startPtr) sur une ListNode. Ceci te donne à tout moment le premier élement de ta liste chainée, qui te permettra de la parcourir. Là InsertItem recoit un pointeur sur cet élement de départ pour le modifier. En clair quand tu vas insérer un nouveau noeud dans ta liste, tu vas créer ce noeud avec malloc() puis tu vas dire le suivant du noeud que je viens de créer c'est le pointeur de départ que j'ai recu, donc l'ancien début de ma liste et ensuite je vais changer le début de ma liste pour qu'il devienne l'élement que j'ai créé avec malloc. En gros tu inclus ton élement au début de ta liste, car c'est le plus simple.
Ton début de liste étant un pointeur sur une structure ListNode, tu vas recevoir un pointeur sur pointeur de ListNode pour modifier le début de la liste.
Donc ListNodePtr* déréférence un pointeur sur une ListNode, donc est un ListNode**. Cette réponse me parait un peu simple et je ne vosi pas trop où était le problème, donc je ne suis pas sûr d'avoir répondu à la question, mais j'espère avoir été clair !
Anthony -- Alan Turing thought about criteria to settle the question of whether machines can think, a question of which we now know that it is about as relevant as the question of whether submarines can swim. -- Dijkstra