我的removeLast方法用于返回链表中的最后一个元素,然后返回它。这是我到目前为止所拥有的:
public int removeLast() {
int x = getLast();
removeLast(first);
return x;
}
private void removeLast(Node n) {
if (n == null) {
throw new ListException("Empty list");
} else {
if (n.next == null) {
n = null;
} else {
removeLast(n.next);
}
}
}
first = LinkedList类中的实例variabel
removeLast()成功返回了最后一个数字(getLast()确实正确地执行了此操作,然后应该实际上将removeLast(Node n)移除了它),但是该部分不起作用。
最佳答案
您没有将链接列表的最后一个节点正确设置为null
。正如@Kevin Esche所说,n = null
将n
设置为null,而不是链接列表的节点。在我的代码中,我使用link
引用引用该节点并将其设置为null
。
这应该工作。
public int removeLast(Node n){ //returns and removes the last node
int x = getLast();
if(n == start && n.link == null) //list has only last node
start = null;
else {
if(n.link.link == null)
n.link = null;
else
x = removeLast(n.link);
}
return x;
}
从某处调用
removeLast()
方法时,将start
或first
作为参数传递。从
removeLast()
调用main()
这是从main方法调用
removeLast()
方法的示例。public static void main(String[] args){
LinkedList ll = new LinkedList();
/* add the nodes */
System.out.println("The original LinkedList is");
/* display the LinkedList */
System.out.println("The last node is "+ll.removeLast(ll.start));
System.out.println("After removing the last node, LinkedList is");
/* display the current LinkedList */
}