Итак, у вас есть класс под названием Node с двумя переменными экземпляра, называемыми next и data. Они называются переменными экземпляра, поскольку они относятся к экземплярам этого класса, а не к самому классу. То есть ваш класс в основном является шаблоном (или планом) для объектов, у каждого из которых будет свое собственное значение данных и следующее значение.
Чтобы создать экземпляр класса Node, вам нужно вызвать конструктор и передать необходимые параметры. В вашем случае это конструктор;
public Node(int d) {
data = d;
}
Для вызова этого конструктора вы используете новое ключевое слово (в Java, которое я предполагаю), как это;
Node x = new Node(10);
И обратите внимание, что вы должны указать целочисленное значение для конструктора. В теле конструктора (между {}) вы видите, что переменным данным присваивается значение в d, которое является значением, которое вы передаете конструктору, в этом примере значение 10. Теперь у вас есть объект типа Узел со значением 10 как его данные и нулевым следующим узлом.
На этом объекте вы можете теперь вызвать метод appendToTail(). Допустим, мы делаем это:
x.appendToTail(20);
Позволяет отслеживать, что происходит.
Node end = new Node(d);
Новый узел с именем конец создаются и мы устанавливаем значение 20 для данных (помните, что d имеет значение 20 на данный момент, потому что это значение, которое мы прошли, когда мы называли метод). Это полностью независимый узел от x со своим уникальным значением для данных.
Node n = this;
Это самостоятельная ссылка на текущий объект. Так как мы назвали этот метод на х, то это тот же объект, что и х.
while (n.next != null) {
n = n.next;
}
Этот цикл в то время как собирается начать искать конец списка, перейдя от текущего узла к следующему узлу, пока следующий узел не является нулевым. Поскольку единственным узлом, который мы создали до сих пор, является x, тогда n.next фактически является нулевым, поэтому цикл while не выполняется на этот раз.
n.next = end;
Теперь мы устанавливаем следующее значение n (которое равно x) на созданный узел. Теперь у вас есть список, как это:
10 -> 20 -> null
Предположим, что вы должны были сделать следующий вызов:
x.appendToTail(30);
Тогда подобное происходит, за исключением, когда вы получаете время цикла значение n.next является не null, поэтому вы переходите в тело цикла и назначаете n для указания на n.next, который в нашем примере является узлом с 20. Следующая итерация цикла даст значение null, чтобы цикл завершился, и новый узел с данные 30 будут установлены на следующее значение последнего узла в списке. Таким образом, у вас будет:
10 -> 20 -> 30 -> null
На каком языке это? –