java - 删除索引 N 处的元素,LinkedList

标签 java list linked-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;
}

我想我可能在列表大小 (int N) 方面做错了什么。

最佳答案

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

编辑

还要注意你的 for 循环,你正在更改节点 k 之前的所有节点中的下一个

关于java - 删除索引 N 处的元素,LinkedList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39948294/

相关文章:

java - 使用 Sphinx 4 语音识别平台效果不佳

java - 在 JTable 中获取选定的单元格值

python 3.5 : search different values in a list

python - 如何在 Python 中请求一组列表,请求一个数字 (x),删除 x 个输入,然后重新列出这些输入?

java - 插入已排序的链表

c - 将项目添加到链接列表的末尾

c# - 应用开发 : Should I check for a primary-key on a table or assume it should be there?

java - 有什么好的 Java HTML 解析器吗?

python - 检查变量是否为列表的最佳方法是什么?

c++ - 打印链表只打印头节点