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

时间:2019-03-15 01:16:24

标签: java doubly-linked-list

我正在尝试删除给定索引处的Node,但是我一直在测试失败,有时甚至得到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();
        }
}

1 个答案:

答案 0 :(得分:0)

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

让要删除的节点为del。

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

请记住,这里您必须同时保持上一个和下一个指针 还可以从两侧处理空条件。