当前位置: 首页 > 知识库问答 >
问题:

实现双重链表的remove方法

满博
2023-03-14

我试图为类分配实现一个双重链表。我目前正忙于实现一个方法来移除指定索引处的节点。

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以外的任何指定节点。我想问题可能出在我的add方法上,但我不太确定。

共有1个答案

傅恺
2023-03-14

在你的第一个if条件下-

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

这是因为您要从列表中删除head,所以head应该指向head的下一个节点。

 类似资料:
  • 本文向大家介绍C#双向链表LinkedList排序实现方法,包括了C#双向链表LinkedList排序实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#双向链表LinkedList排序实现方法。分享给大家供大家参考。具体如下: 1.函数 打印链表函数PrintLinkedList 和 排序函数SortLinkedList 注:下面代码中的链表每项都是double类型,如果换做其他

  • 我需要帮助为我的PerformanceList编写这个addAfterCurrent方法,它是一个双链表,声明了一个standerd head、tail和cursor(current)节点。节点类使用 PerformanceNode Next;PerformanceNode上一个;

  • 本文向大家介绍Python双链表原理与实现方法详解,包括了Python双链表原理与实现方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python双链表原理与实现方法。分享给大家供大家参考,具体如下: 文章目录 Python实现双链表 单链表与双链表比较 双链表的实现 定义链表节点 初始化双链表 判断链表是否为空 双链表尾部添加元素 双链表头部添加节点: 双链表表头删除 双链表按位

  • 能否有人请让我知道如果有任何问题与这个实现。 下面是我如何将节点添加到列表中:

  • 我必须编写一个双链接列表,我正在尝试实现方法,该方法接受一个参数obj,遍历列表并删除包含元素obj的每个节点。 我面临的问题是,我从前面遍历链表,当我找到包含obj元素的节点时,我会在包含obj元素的节点前后更改节点的下一个/上一个指针。然而,我并没有删除带有obj本身的节点,据我所知,c没有垃圾收集,所以带有obj的节点仍然悬在空中。我如何删除它? 我的擦除()

  • 现在我正在准备编码面试,我有一个关于Java链表的问题。你能告诉我一些可靠的来源,我可以从那里学习和实践基本的链表方法。我喜欢这个:www.cs.cmu.edu/~adamchik/15-121/structions/linked%20lists/code/linkedlist.java,但我对一些方法实现感到困惑。例如,方法E get(int pos)返回的不是node,而是位于pos位置的节点