我从头开始创建了一个删除方法,用于从指定索引处的链表中删除节点。
它没有删除正确的节点。我尝试在 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/