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

java中在链表开头插入新节点后自动更新头节点

高祺
2023-03-14
Node insert(Node start, int x){
    Node newNode = new Node(x);
    if(start == null) {
        return start = newNode;
    } else {
        newNode.next = start;
        start = newNode;
    }
    return start;
}

而这是我的主课,有没有其他方法做得更有效率?

LinkedList list=new LinkedList();
Node startPoint=new Node(20);  
Node newNode=list.insert(startPoint, 16);
Node newNode1=list.insert(newNode, 22);
Node newNode2=list.insert(newNode1, 2);
Node newNode3=list.insert(newNode2, 5);
Node newNode4=list.insert(newNode3, 44);
Node newNode5=list.insert(newNode4, 77);

共有1个答案

巢海
2023-03-14

而这是我的主课,有没有其他方法做得更有效率?

没有。
这是这个问题的经典解决方案。

之所以不能做得更好,是因为该操作的实现需要O(1)时间。这是非常酷和性感的,因为执行它的时间不依赖于输入的大小,这是一个非常酷的属性在大型数据集上。

 类似资料:
  • 在链表开头插入新节点 如何在链表的开头插入节点? 并用java实现了一个简单的LinkedList。

  • 我正在玩一个链接列表类项目的指针,我不知道如何创建到新节点的链接。我有一个类,它包含像这样的方法来操作数据结构。我希望这些节点是从csv文件中读取的出价。 当我从CSV加载所有数据时,我想 创建一个新的出价 将新的出价传递给函数 设置Bid对象的nextBid指针,并更新链接列表的尾部 我将不胜感激为每个出价对象创建新地址的任何指针,因为现在尾节点只'记得'第一个出价的地址。 我复制了下面的代码,

  • 我在做一个程序,没有使用Java的内置链表类;我在从头开始做。除了编写一个将节点插入链表的特定位置的方法外,我在所有方面都取得了成功。 我有一个方法将一个特定的节点设置为“当前”节点。所以,例如,我有一个链表,看起来是这样的:猫-->狗-->使-->好-->宠物,“当前”等于2;这意味着“当前”节点是“狗”。 从这里开始,假设我想在“current”的位置插入一个新节点,它的info字段为AND。

  • 我尝试实现循环链表的insert方法。我想我取得了一些成功。 问题:当我显示列表时。display方法将循环,因为链接的每个next变量都链接到一个非Null节点对象。所以head永远不会是空对象。根据我对单链表的回忆,head总是指向列表中的第一个节点或其中包含数据的第一个节点。 我对循环链表的概念理解:根据我的理解,循环链表有点像一个单链表,但有一点小的变化:尾部对象的下一个变量指向头部。 来

  • 我正在为BST开发一个递归插入方法。假定该函数是一个递归辅助方法,并且位于名为Node的私有类中。节点类位于名为BinarySearchTree的类中,该类包含根的实例变量。当我尝试插入一个元素时,我在以下位置得到一个NullPointerException: 这左=插入((节点)左)。元素); 我不确定为什么会发生这种情况。如果我理解正确,在BST中,我假设将项目插入到所横穿路径的最后一点。感谢

  • 所以我遇到了一个问题。我知道那是什么。我就是想不出一个办法来解决这个问题。。 首先是我的尾部插入函数 如你所见。它很简单。如果头节点为空。它将新节点添加到头。如果不是。它一直移动头直到它达到空,然后它添加节点。这就是问题所在。我移动头节点指针,我不应该做。但我似乎想不出另一种方法来做。因为我在传递MY_QUEUE。我将包括头文件和声明,以了解这些是什么。 插入尾部函数是追加函数。我不能改变我的参数