У меня есть задание для моего класса кодирования, который просит меня создать связанный список, не полагаясь на класс SingleLinkedList
или любой из его методов. Я застрял на последнем шаге, который просит меня удалить узел в конце связанного списка только с заголовком и хвостом, и я полагаю, что я не должен использовать метод removeLast
.Как удалить узел в конце связанного списка, не полагаясь на методы?
Я знаю, что я должен использовать обход списка с циклом while, чтобы идентифицировать элемент перед последним элементом, но я не уверен, как это сделать. Вот все, что мой код до сих пор:
public class ListByHand {
private static class Node<E> {
private E data;
private Node<E> next;
private E z;
private Node(E dataItem) {
data = z;
next = null;
}
private Node(E dataItem, Node<E> nodeRef) {
data = dataItem;
next = nodeRef;
}
}
public static void main(String[] args) {
// 1. Created original list containing Bob, Floyd, Mary, and Sue
Node<String> head = new Node<String>("Bob", null);
Node<String> nodeRef = head;
Node<String> tail = head;
tail.next = new Node<String>("Floyd", null);
tail = tail.next;
tail.next = new Node<String>("Mary", null);
tail = tail.next;
tail.next = new Node<String>("Sue", null);
tail = tail.next;
// Loop to print each name in the node
while(nodeRef != null) {
System.out.println(nodeRef.data);
nodeRef = nodeRef.next;
}
// 2. Added Mark to the front of the list
head = new Node<String>("Mark", head);
System.out.println(head.data);
// 3. Deleted the first node in the list
head = head.next;
System.out.println(head.data);
// 4. Added Peter to the end of the list
tail.next = new Node<String>("Peter", null);
tail = tail.next;
System.out.println(tail.data);
// 5. Deleted the last node in the list
}
}
У вас должен быть предыдущий узел, и это может вам помочь; http://stackoverflow.com/questions/15792682/delete-last-node-of-a-linked-list – Shivam