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

在链表中插入节点时发生逻辑错误(Java)

夹谷鸿福
2023-03-14

我试图学习在链表中插入一个节点(并返回头部),但由于某种原因,它是不正确的。

这是我的方法:

1.使用所需数据创建新节点

2.如果我们想在开头插入它,将这个新节点指向头部并返回新节点

3.否则,循环到要插入节点的位置

-到达后,将要插入的节点指向当前节点的下一个节点

-将当前节点指向要插入的节点

-把脑袋还给我

为什么这不起作用?非常感谢!

Node InsertNth(Node head, int data, int position) {
    Node node = new Node();
    node.data = data;

    if (position == 0) {
        node.next = head;
        return node;
    }
    else {
        Node curr = head;
        int currPos = 0;

        while (currPos < position) {
            curr = curr.next;
            currPos++;
        }
        node.next = curr.next;
        curr.next = node;
    }
    return head;
}

共有2个答案

那安宁
2023-03-14

如果将节点插入头部,则需要将头部设置为要插入的节点。

Node InsertNth(Node head, int data, int position) {
Node node = new Node();
node.data = data;

if (position == 0) {
    node.next = head;
    head = node;
}
else {
    Node curr = head;
    int currPos = 0;

    while (currPos < position) {
        curr = curr.next;
        currPos++;
    }
    node.next = curr.next;
    curr.next = node;
}
return head;

}

东方俊材
2023-03-14

如果在curr节点之后插入新节点,则此循环会使一个节点走得太远。

while (currPos < position) {
     curr = curr.next;
     currPos++;
}

您可以通过用笔和纸或调试器遍历代码轻松解决这个问题。

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

  • 比较 数字 计算 间隔 否则 与 或 开关 计数器 保持 延时 平均 今天日期 现在时间 波形 序列 随机数 映射 过滤 函数 计算+ 比较+ 阀门

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

  • 问题内容: 我正在做一个作业,告诉我假设我有一个带有标题和尾部节点的单链接列表。它要我在位置p之前插入项目y。有人可以查看我的代码并告诉我我是否走对了吗?如果没有,您能为我提供任何提示或指示(无双关语)吗? 我认为我可能是错的,因为即使在问题描述中特别提到了头和尾节点,我也根本不使用头和尾节点。我正在考虑编写一个while循环来遍历列表,直到找到p并以这种方式解决问题,但这不是固定时间的,对吗?

  • 我试图理解双重链表的java实现。我有以下代码: 和以下内容: 为了清晰起见,这里只显示了insertHead()方法。 现在我明白了,如果有人在main方法中运行insertHead(10),如果列表为空;一个新的对象形成,头部和尾部引用变量都指向该对象。 我不明白的是如果列表不是空的;代码段非常混乱。 1)我所理解的是n=10,null和head被传递给构造函数:public DLLNode(

  • 为了快速地将数据插入到数据库中,我一直在尝试生成一个巨大的SQL(大约200个查询),但由于某种原因,我得到了SQL错误,但不确定是什么导致了它。 错误: SQL错误(1064):您的SQL语法有错误;查看与您的MySQL server版本相对应的手册,以了解在第8行附近使用的正确语法 下面是我的一部分代码: 你可以在Pastebin上找到我的完整SQL。 不知道是什么原因造成的,因为后面的“6”