C: Comment fonctionne struct node * next? [fermé]

Fermé . Cette question nécessite détails ou clarté . Il naccepte pas les réponses actuellement.

Commentaires

  • Le simple fait de le déclarer comme Node* ne le fait pointer nulle part, il indique simplement au compilateur quil ' un pointeur vers un Node (ou aucun Node du tout). Il doit y avoir un code réel qui définit le pointeur next pour quil pointe vers le Node suivant. Est-ce cela qui vous a confus?
  • Comme il ny a pas (encore) de struct Node, aucun membre nen existe. Ainsi aucun membre ne pointe nulle part.

Réponse

Votre code nest quun petit morceau dune liste liée.

Lidée est que votre liste se compose de n occurrences de la structure que vous avez appelée « Node ». Vous avez besoin dun pointeur vers le PREMIER dentre eux, ce pointeur vous indique lemplacement mémoire de cette première structure (vous demandez généralement lespace pour cela manuellement avec malloc). La structure de ce bloc mémoire est définie par votre struct « Node ». Il vous indique quil y a dabord quelques octets pour lint (sizeof int vous indique comment mutch) et ensuite il y a quelques octets pour une adresse (cest votre pointeur « suivant »). Sur le dernier élément de votre liste liée, vous utilisez généralement null comme valeur pour le suivant, de cette façon vous pouvez vérifier si votre élément actif est le dernier. Pour ajouter un élément à votre liste, vous devez valoriser la mémoire et changer le pointeur suivant du dernier élément vers lemplacement de mémoire que malloc a donné. (Et noubliez pas de définir le pointeur suivant de lélément que vous venez de créer sur null.)

De cette façon, une liste liée fonctionne. Jespère que cela aide un peu! image de la liste liée

Commentaires

  • En fait, il serait plus correct que la flèche de " suivant " pointe vers " Objet " (ou peut-être même mieux, dans le coin supérieur gauche de la case suivante). Dans létat actuel des choses, il semble que ' pointe le membre " " suivant de la structure, mais en réalité, elle ' pointe vers la prochaine instance de données ' adresse de base. Vous pouvez également choisir vers quoi doit pointer lélément final ' s " "; il peut pointer par ex. NULL (auquel cas la liste ne peut être parcourue que dans un sens), ou elle peut pointer vers le premier élément de la liste (formant une liste chaînée circulaire).
  • Vous pouvez aussi, bien sûr, avoir chaque membre de la liste pointe à la fois sur " suivant " et sur " élément " précédent de la liste. Cela nécessite un peu plus de comptabilité lors de la modification de la liste, mais permet de parcourir la liste dans nimporte quelle direction, ce qui peut être avantageux en lecture. Comme pour tout le reste de lingénierie, ' est un compromis.

Réponse

Cela fait partie dune définition de type. Il en lui-même nindique rien, pour la même raison que vous ne pouvez pas mettre un vrai canapé et une télévision à lintérieur dun salon dessiné sur un ensemble de plans pour une maison. Il spécifie simplement « cest ce qui est censé aller ici. »

La façon dont il pointe vers le nœud suivant dans une liste chaînée est que lorsque quelquun crée réellement les nœuds, ils attribuent une valeur au champ décrit par cette définition, qui est un pointeur contenant ladresse dun autre Node.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *