J'ai deux façons d'insérer un noeud depuis le début. Le premier fonctionne tandis que le second ne fonctionne pas. Peux-tu m'expliquer pourquoi?Liste liée: Insertion depuis le début
(La liste comporte déjà des éléments et la tête est le nœud de la tête de cette liste)
Et j'ai la tête initialisé comme ce
list *head = new list;
void push(list **head, int info)
{
list *node=new list;
node->data=info;
node->next=*head;
*head=node;
}
push(&head,5);
et la suivante est
void push(list *head, int info)
{
list *node=new list;
node->data=info;
node->next=head;
head=node;
}
push(head,5);
votre second passe le pointeur 'head' par valeur, donc' head = node' n'a pas d'effet, est-ce cela que vous voulez dire? – user463035818
Dans le 2ème cas, vous passez le 'head' (qui est un pointeur) mais pas l'adresse de celui-ci. Ainsi, le changement de 'head'happens" localement "dans' push() 'mais pas sur' 'original'' 'head'. – Scheff
Par défaut, les arguments sont passés * par valeur *, ce qui signifie qu'ils sont copiés. Maintenant, si vous modifiez une copie, l'original ne changera pas, non? Alors que pensez-vous qui se passe lorsque vous, dans la deuxième fonction, modifiez la * copie * ('head') d'une variable? –