这是作业
有人要求我从 LinkedList 中删除第 k 个元素。我还得到了它的大小 int N
。问题是删除位置“k”处的节点后如何更新列表的大小?如果我的代码中的逻辑有问题,请指出。
我不想要解决方案只是指导,谢谢。
int N;
Node first;
// delete the kth element (where k is between 0 and N-1 inclusive)
public void delete (int k) {
if (k < 0 || k >= N)
throw new IllegalArgumentException();
Node x = first;
if( k == 0){
first = x.next;
N = N - 1;
}
for(int i = 1; i < k; i++){
x = x.next;
N = N - 1;
}
x.next = x.next.next;
N = N - 2;
}
我想我可能在列表大小 (int N) 方面做错了什么。
最佳答案
当你删除一个节点时,你只需要将前一个Node
的next
更改为k中的(新)下一个节点并递减N
(N--
) 更新列表大小。
编辑
还要注意你的 for 循环,你正在更改节点 k
之前的所有节点中的下一个
关于java - 删除索引 N 处的元素,LinkedList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39948294/