LinkedList在索引java处删除

时间:2016-04-12 15:11:20

标签: java linked-list

我从头开始创建一个remove方法,从指定索引处的链表中删除一个Node。

它没有删除正确的节点。我试图在eclipse中使用调试器,但无法解决问题。

每个节点都包含一个令牌。 我已经包含了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;
    }

2 个答案:

答案 0 :(得分:3)

问题是,一旦达到正确的索引,就会删除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();
}

答案 1 :(得分:0)

   public void Atposition(E pos){
    Node<E> curr = head, prev = null;
    if(curr!=null&&curr.getElement()==pos){
    curr=head;
    head=head.getNext();
    size--;
    return;
}while(curr!=null&&curr.getElement()!=pos){
    prev = curr;
    curr=curr.getNext();
}
if(curr==null){
    System.out.print("the list is empty");
    return;
}
    prev.next=curr.next;
}