删除单链表中的最后一个元素
Delete last element in singleLinked List
我正在制作一个简单的链表,我正在尝试实现一种允许我删除链表最后一个节点的方法。在某些时候,我的方法是错误的,我不确定错误在哪里以及如何修复它。这是代码!
public Nodo deleteEnd() {
Nodo aux;
if (head == null) {
throw new NoSuchElementException("Element cant be deleted");
} else {
aux = head;
while (aux.next.next != null) {
aux = aux.next;
}
size--;
}
return aux;
}
尝试减少一个 .next
:
while (aux.next != null) {
aux = aux.next;
}
您需要将最后但并非最不重要的节点的 next
分配给 null
:
if(head.next == null) {
// head is last!
head = null;
size = 0;
} else {
previous = head;
current = head.next;
// while current is not last, keep going
while(current.next != null) {
previous = current;
current = current.next;
}
// current is now on last!
previous.next = null;
size--;
}
public Nodo deleteEnd() {
if (head == null) {
throw new NoSuchElementException("Element can't be deleted");
}
Nodo current = head;
Nodo next = current.next;
// Check if there is only the head element.
if ( next == null )
{
size--;
head = null;
return current;
}
// Skip to the end.
while (next.next != null) {
current = next;
next = next.next;
}
// Break the link to the next element.
current.next = null;
size--;
return next;
}
添加
aux.next = null;
在 while 循环之后 - 然后将没有对最后一个元素的引用。
我正在制作一个简单的链表,我正在尝试实现一种允许我删除链表最后一个节点的方法。在某些时候,我的方法是错误的,我不确定错误在哪里以及如何修复它。这是代码!
public Nodo deleteEnd() {
Nodo aux;
if (head == null) {
throw new NoSuchElementException("Element cant be deleted");
} else {
aux = head;
while (aux.next.next != null) {
aux = aux.next;
}
size--;
}
return aux;
}
尝试减少一个 .next
:
while (aux.next != null) {
aux = aux.next;
}
您需要将最后但并非最不重要的节点的 next
分配给 null
:
if(head.next == null) {
// head is last!
head = null;
size = 0;
} else {
previous = head;
current = head.next;
// while current is not last, keep going
while(current.next != null) {
previous = current;
current = current.next;
}
// current is now on last!
previous.next = null;
size--;
}
public Nodo deleteEnd() {
if (head == null) {
throw new NoSuchElementException("Element can't be deleted");
}
Nodo current = head;
Nodo next = current.next;
// Check if there is only the head element.
if ( next == null )
{
size--;
head = null;
return current;
}
// Skip to the end.
while (next.next != null) {
current = next;
next = next.next;
}
// Break the link to the next element.
current.next = null;
size--;
return next;
}
添加
aux.next = null;
在 while 循环之后 - 然后将没有对最后一个元素的引用。