#c #oop
#c #ооп
Вопрос:
class Node {
public:
int data;
Node* next;
};
В этом узле есть класс, но я не понял, что Node* next
это такое. Это похоже на конструктор класса?
Комментарии:
1. Это односвязный список. Это просто указатель на следующий узел.
2. Это похоже на конструктор класса? Просто еще одна переменная-член, которая просто случайно указывает на экземпляр a
Node
. Если у этого есть какое-либо причудливое имя (кроме, возможно, односвязного списка) Я этого не знаю.3. Это просто означает, что каждый экземпляр
Node
содержит указатель на другой экземплярNode
. Настройте вещи такNode
, чтобы s были в цепочке, причем последнийNode
в цепочке содержит нулевой указатель, и вы создали односвязный список. Настройте указатели другими способами (например, следуя цепочке, в конечном итоге вы вернетесь к исходному узлу), после чего вы сможете создавать другие структуры данных.
Ответ №1:
Это не конструктор класса, это просто вторая общедоступная переменная-член. Он имеет тип Node*
, а не тип int
, но в остальном он похож на int data;
строку.
Ответ №2:
В этом случае next
является общедоступным полем внутри узла класса, которое имеет тип Node*
Класс Node
представляет собой связанный список с данными типа int
.
эквивалентно:
struct Node {
int data;
Node* next;
};
Комментарии:
1. Размер каждого узла сам по себе не составляет 4 байта, но данные (то есть int) обычно составляют 4 байта. Вы правы, хотя размер int может меняться в зависимости от архитектуры.