У меня есть этот код для односвязного списка, и он работает.Я теоретически понимаю принцип односвязного списка, но когда дело доходит до кода, я не понимаю, как работает указатель.Моя проблема заключается в этом двухстрочном коде, который является частью кода, упомянутого в последнем
p.next = new Node<>(a[i], null);
p = p.next;
, почему мы вызываем next по p и создаем новый узел, а затем присваиваем null следующему одновременно через параметр.?затем давая значение p из p.next, который должен быть нулевым?я попытался распечатать p.next и next, чтобы увидеть, совпадают ли они или есть разница, и я получил в консоли адрес для p.next и ноль для следующего.чем они отличаются друг от друга?Мне нужно некоторое объяснение в этой части кода и как создается узел и указатель.
public class EnkeltLenketListe<T> implements Liste<T> {
private static final class Node<T>
{
private T value;
private Node<T> next;
private Node(T value, Node<T> next)
{
this.next = next;
this.value = value;
}
}
private Node<T> head, tail;
private int counter;
public EnkeltLenketListe(T[] a)
{
this();
int i = 0; for (; i < a.length && a[i] == null; i++);
if (i < a.length)
{
head = new Node<>(a[i], null);
Node<T> p = head;
counter = 1;
for (i++; i < a.length; i++)
{
if (a[i] != null)
{
p.next = new Node<>(a[i], null);
p = p.next;
counter++;
}
}
tail = p;
}
}