Мое объяснение вставки: Я назначил «следующую переменную» хвоста, чтобы удерживать адрес старого узла. Я назначил хвост новым узлом, вставленным в список.Невозможно правильно отобразить узлы списка, начиная с хвоста до головы
Я попытался отобразить список, начиная с хвоста и проходя через список, пока не достигнет головы.
Проблема: Но введенный вход C, который не то, что я хотел. Дисплей должен отображать C, B, A.
Я даже отлаживаю свой код на бумаге. Я не знаю, почему дисплей не извлекает последний адрес узлов, связанных в связанном списке. Он только получил последний узел в списке и отобразил только последний узел в списке.
public static void main(String[] args)
{
LinkedList list = new LinkedList();
list.insert("A");
list.insert("B");
list.insert("C");
list.display();
}
public void insert(String data)
{
Link link = new Link(data);
// this code only executes the first time when the list has
// no node
if(head == null)
{
head = link;
tail= link;
}
// this code will execute when the linked list has one or more node
else
{
tail.next = tail;
tail = link;
}
}
public void display()
{
while(tail != null)
{
System.out.println(tail.data);
tail = tail.next;
}
}
Не должно быть tail.next = link, tail = tail.next? То, что у вас есть, это tail.next = tail, который укажет на ту же ноту и создаст цикл. –
Я проверил ваш код, но связанный список все еще отображает «C.». – Nicholas
в «отображении» вы перебираете элементы в списке? похоже, что вы только печатаете хвост. Первым узлом в вашем связанном списке является голова. – Paxic