删除索引N,LinkedList处的元素

Tee*_*emo 6 java linked-list list nodes

这是功课

我被要求从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;
}
Run Code Online (Sandbox Code Playgroud)

我想我可能在列表大小(int N)上做错了.

wil*_*lem 2

删除节点时,只需将 k 中的前一个Node节点更改next为(新的)下一个节点,并递减N( N--) 即可更新列表大小。

编辑

另请注意 for 循环,您正在更改节点之前所有节点的下一个k