为双向链表实现删除方法

时间:2016-02-13 15:32:29

标签: java arrays linked-list doubly-linked-list

我正在尝试为类分配实现双向链表。我目前停留在实现一个方法来删除指定索引处的节点。

public void remove(int index) {
    if (index < 0 || index > count-1) {
        throw new ListIndexOutOfBoundsException("The index "+index+" is out of bounds.");
    }
    if (isEmpty()) {
        System.out.println("List is empty");
        return;
    }

    MedicationNode curr = head;
    int k = 0;
    while(k < index) {
        curr = curr.next;
        k++;
    }
    if (curr.prev == null) {
        curr.next.prev = null;
    }else if(curr.next == null) {
        curr = curr.prev;
        curr.next = null;
    }else{
        curr.next.prev = curr.prev;
        curr.prev.next = curr.next;
    }           
    count--;
}

该方法可以删除链接列表中除索引0之外的任何指定节点。我认为问题可能出在我的添加方法上但我不确定。

1 个答案:

答案 0 :(得分:1)

在你的第一个if条件 -

if (curr.prev == null) {
    curr.next.prev = null;
    //Make your head of the linked list point to this node
    head = curr.next;
}

这是因为您要从列表中删除头部,因此头部应指向头部的下一个节点。