Почему этот оператор C LinkedList недействителен?

#c #pointers #data-structures #linked-list

#c #указатели #структуры данных #связанный список

Вопрос:

Я новичок в C , в настоящее время изучаю его на предмет структуры данных. Я видел этот пример на Указателях, и я не мог указать, почему он недействителен. Я поискал в Google, но не смог найти ответа.

Фактический пример

Вопрос:

 Are the following expressions true or false
a.  head->next == ptr1     TRUE
b.  ptr1->next->data== 46      FALSE (Why!)
c.  ptr2->next == NULL     FALSE (Why!)
d.  head->data == 12       TRUE
 

Комментарии:

1. Как вы думаете ptr1->next->data , что должно быть?

2. Я верю, что он будет печатать ptr1->next->data , будет печатать 34

3. А 34 равно 46?

4. Разве вы не можете указать пальцем на эту картинку и выделить соответствующую стрелку, как описано в каждом вопросе?

5. Теперь я понял, большое вам спасибо, ребята, теперь я чувствую себя глупо

Ответ №1:

b. ptr1-> next->data== 46 FALSE (почему!)

ptr1 указывает на узел, который data является 24 . Этот узел next указывает на узел, который data является 34 . Узел после этого — чей data 46 . Итак, ptr1->next->next->data == 46 вместо этого будет TRUE.

c. ptr2->next == NULL FALSE (почему!)

ptr2 указывает на узел, который data является 63 . Этот узел next не NULL является, он указывает на узел, который data есть 75 . Этот узел next является NULL . Итак, ptr2->next->next == NULL вместо этого будет TRUE.