Заголовок списка относится к первому узлу списка.Было бы хорошим именем для переменной, хранящей ссылку на этот узел, и я ожидал бы, что она будет содержать нулевую ссылку, если список будет пустым
someLinkedList.head
|
|
v
______ ______ ______
| |n| | |n| | |n|
| |e| | |e| | |e|
| 12 |x| --> | 34 |x| --> | 56 |x| --> null
| |t| | |t| | |t|
|____|_| |____|_| |____|_|
В зависимости от контекста хвост может ссылаться наразные вещи.Терминология, к которой я привык, говорит, что в данном примере хвост соответствует 34 -> 56 -> null
, то есть списку, который следует за заголовком.
В других контекстах это может быть ссылка на последний узел.В такой интерпретации хвост будет ссылаться на узел 56
в вашем примере.
Относительно вашего первого редактирования, которое оказывается совершенно другим вопросом :
Указатель - это значение, соответствующее адресу памяти.Ссылка - это значение, ссылающееся на некоторый объект (или ноль).Вы не можете делать арифметику указателей на ссылках Java, но в противном случае я бы сказал, что они довольно похожи.
Что может вас смущать, так это то, что переменные в Java могут никогда не содержать объектов .Объекты всегда живут в куче, а переменные содержат примитивные типы данных или ссылки на объекты в куче.
Относительно вашего второго редактирования:
В приведенном вами примере это выглядиткак метод add пропускает первый элемент, и в некотором смысле это делает.Это связано с тем, что в качестве реализации в качестве головы используется элемент-пустышка.Посмотрите на инициализацию переменной head в конструкторе:
head = new Node(null);
Я не могу понять, почему они решили это сделать.Для меня это выглядит глупо.