Awesome Dude Ответов: 3

Может ли кто-нибудь объяснить, что интуитивно означает "узел* следующий" в этом фрагменте кода?


структурный узел{
int data;
узел* далее;
};

Что я уже пробовал:

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

3 Ответов

Рейтинг:
2

CPallini

struct node
{
  int data;
  node* next;
};
Такой код обычно используется в связанный список[^] реализация, где "узел" содержит некоторые "данные" плюс указатель на следующий "узел":
 _______         ________
|       | next  |        | next
|data=5 | ----> |data=12 | ----> ...
|_______|       |________|


Рейтинг:
18

OriginalGriff

next это указатель на следующий элемент в списке, как следует из названия.

Думаю, каждой структуры экземпляра (каждый node) как лист бумаги. У вас есть десяток листков бумаги, и вы пишете другое число между 1 и 12 в правом верхнем углу - это "адрес" узла.
Теперь положите их в стопку на вашем столе, и возьмите верхнюю часть. Написать data на нем и напишите "Next: 0" в правом нижнем углу.
Теперь у вас есть список с одним элементом - 0 это next адрес, а их там нет.

Возьмите еще один кусок из вашей стопки, напишите другой data на нем поставьте "Next: 0" в правом нижнем углу, а затем измените "0" на предыдущем листе на число в правом верхнем углу нового.
Теперь у вас есть список с двумя узлами: первый содержит адрес второго в правом нижнем углу, а второй говорит "больше нет" с нулем в правом нижнем углу.

Когда вы добавляете новые листы, вы повторяете этот процесс, заменяя последний лист "0" адресом нового листа, пока у вас не будет полного списка - и вы можете отслеживать список с первого листа, просто следуя "цепочке" из next указатели.

Попробуй на своем столе, и ты поймешь, что я имею в виду.

Вот что

node* next;
означает: next является указателем на node структура, и указывает на следующий элемент в списке.