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

双链表的Java手工实现

钦良弼
2023-03-14

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

PerformanceNode Next;PerformanceNode上一个;

public void addAfterCurrent(PerformanceNode element)
    {
        PerformanceNode temp = element;
        if (cursor == null)
        {
        head = temp;
        tail = temp;
        cursor = temp;
        }
        else
        {
            temp.setNext(cursor);
            cursor.setPrev(temp);

            cursor = temp;

            if(cursor == null)
            {
                tail = cursor;
            }
        }

    }

共有1个答案

松灿
2023-03-14

我根据定义用一些注释实现了:

public void addAfterCurrent(PerformanceNode node) {
    if (node == null)  {
        throw new IllegalArgumentException("Node to be added cannot be null!");
    }

    if (cursor == null && tail == null) {
        throw new IllegalStateException("There is neither current nor tail node!");
    }

    if (cursor == null) { // there is no current node
        // insert the node at the end of the list
        tail.setNext(node);
        node.setPrev(tail);

        // mode end cursor
        tail = node; 

        // current node should now be the newly created node
        cursor = node;
    } else { // there is current node
        PerformanceNode temp = cursor.getNext();

        // new node directly follows the current node 
        cursor.setNext(node);
        node.setPrev(cursor);

        if (temp != null) {
            node.setNext(temp);
            temp.setPrev(node);
        } else { // current node was the last node
            tail = node; // mode end cursor
        }
    }
}
 类似资料:
  • 我必须实现类"DoubleChainedList"和"Elem"。DoubleChainedList管理一个双链列表,Elem是关联的节点类,指针指向后继节点和前驱节点。 我必须实施以下方法: public void removeAtIndex(int i)//删除位置i处的元素 public int[]toArray()//将列表作为数组返回 双链列表 要素: 我的问题:它显示了以下错误:hea

  • 我写了一个程序,通过双链表管理银行账户,但我发现取消程序有问题。 我仍然有同样的问题,即使我尝试了这个方法:-(pnt)-

  • 我已经得到了实现双向链表的框架。我被PushFront()方法难住了。方法应该将提供的元素添加到链表的前面,并且应该将地址返回到新的头节点。我对如何访问列表的当前头部感到困惑,以便我可以将其分配给pNext指针。到目前为止,PushTop()方法看起来是这样的: 元素类构造函数: 数据类: 主要: 我的理解是,您通常会在调用PushFron()时提供头的地址,但是因为我没有提供,我不确定如何访问它

  • 我试图为类分配实现一个双重链表。我目前正忙于实现一个方法来移除指定索引处的节点。 该方法可以移除链表中除索引0以外的任何指定节点。我想问题可能出在我的add方法上,但我不太确定。

  • 本文向大家介绍双向链表和双向循环链表?相关面试题,主要包含被问及双向链表和双向循环链表?时的应答技巧和注意事项,需要的朋友参考一下 双向链表: 包含两个指针,一个prev指向前一个节点,一个next指向后一个节点。 双向循环链表: 最后一个节点的 next 指向head,而 head 的prev指向最后一个节点,构成一个环。

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