这只是一个代码片段,但考虑到其他所有内容都编码正确,这会在逻辑上删除最后一个节点吗?还是我的逻辑有问题?
问题已回答。
当前,代码在退出while
循环后会抛出异常,因为current
将是null
。该方法的正确版本(从特定位置删除)可能如下所示:
public static Node delete(Node head, int position)
{
Node traverse = head;
if(position == 0) {
//remember this case
head = head.next;
return head;
}
for(int i = 1; i < position; i++)
traverse = traverse.next;
Node deleteit = traverse.next; //want to skip over this node
traverse.next = deleteit.next;
return head;
}