java - LinkedList 在索引处删除 java

标签 java linked-list

我从头开始创建了一个删除方法,用于从指定索引处的链表中删除节点。

它没有删除正确的节点。我尝试在 Eclipse 中使用调试器单步执行,但无法发现问题。

每个节点都包含一个 token 。 我已经包含了 Token 类、Node 类。 我已在 List 类中编写了我的方法,并包含了一个 Test 类。

remove 方法当前正在删除指定索引旁边的节点。 我怎样才能让它发挥作用?对于这么长的帖子,我深表歉意。

public class thelist{

    public Node head;

    public List() {
        head = null;
    }

    public Node remove(int index) {
        Node node= head;
        for (int i = 0; i < index; i++) {
            node= node.next;
        }
        node.next = node.next.next;
        return node;
    }

最佳答案

问题是,一旦到达正确的索引,您将删除 NEXT 节点,而不是索引处的节点。一旦找到正确的节点,您可以将ref.previous.next设置为ref.next;因此,删除ref

public Token remove(int index) {
    if (index<0 || index >=size()) {
        throw new IndexOutOfBoundsException();
    }
    Node ref = head;
    for (int i = 0; i < index; i++) {
        ref = ref.next;
    }
    if (index == 0) {
        head = ref.next;
    } else {
        ref.previous.next = ref.next;
    }
    size--;
    return ref.getObject();
}

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

相关文章:

java - 如何将特定元素添加到arraylist数组中

java - 无法在模拟器上从 developer.android.com 启动蓝牙聊天示例应用程序

java - 使用引用(临时变量)来操作LinkedList?

java - 编写一个方法 cut(LinkList x),将列表 x 分成两个(大致)相等的两半,并将后半部分放在前半部分的前面

java - 如果命令包含使用 java 的空格,则无法执行该命令

java - 为什么我们把存储对象属性的变量称为实例变量呢?

java - 如何正确显示对象内对象的数据?

c - 打印链接列表,不打印任何内容

java - Java中如何将-0.0转换为0.0?

java - 交换单链表的最后两个节点