删除双向链表中给定位置的节点

Deleting a Node at a given position in a Doubly Linked List

我正在尝试删除给定索引处的一个节点,但我的测试一直失败,有时甚至得到 NullPointerException。这是我到目前为止所做的:

public void remove(int pos)

{

 if (head == last)

        {
            head = null;
            last = null;
        }
        if (pos == size - 1)

            return removeLast();

        if (pos == 0)

            return removeFirst();

        else
        {
            DoubleListNode<E> current = head;

            for (int i = 0; i < pos - 1; i ++)

            {

                current = current.getNext();

            }
            current.setNext(current.getNext().getNext());

            current.getNext().getNext().setPrev(current);

            return current.getData();
        }
}

从双向链表中删除的步骤:

让要删除的节点为del.

  1. 如果要删除的节点是头节点,则将头指针改为 下一个现任负责人。
  2. 如果 del 的前一个存在,则将前一个的下一个设置为 del。
  3. 如果 del 的 next 存在,则设置 del 的 prev。

记住,这里你必须同时维护previous和next指针 以及处理双方的空条件。