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

为什么下面的代码不能在链表中的特定位置插入节点?

姬天宇
2023-03-14

请看一下下面的代码,让我知道它出了什么问题?我试图在链表中的特定位置插入一个节点。我们需要在插入头部节点后返回它的引用。

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

    if(head==null){
        newNode.next = head;
        return newNode;
    }
    Node first = head;

    while(position > 0 && head.next!=null){
        head = head.next;
        position -= 1;
    }

    newNode.next = head;
    head = newNode;
    return first;

}

共有1个答案

斜俊
2023-03-14

是的,有点不对劲。在while循环之后,您试图在之前插入新节点,但这不起作用。行head=newNode 是无用的。

要么你需要另一个指针指向之前的节点,这样你就可以在这两个指针之间插入新节点,要么你需要停止,同时在循环一步之前,在之后插入新节点。下面是第二个解决方案:

 while(position > 1 && head.next!=null){ //0 is replaced by 1 here
    head = head.next;
    position -= 1;
}

newNode.next = head.next;
head.next = newNode;
return first;

[编辑]

在这个解决方案中,您需要处理当位置等于0时的特殊情况,方法是在循环之前添加以下代码:

if(position==0) {
    newNode.next = head.next;
    return newNode;
}

 类似资料:
  • 我真的需要一些帮助来解决我已经努力了几天的地址簿程序。我正在用C语言处理双向链表。我试图在用户输入的位置将节点添加到列表中,从位置0开始。位置将不会被输入超出范围。(在位置0等位置之前,位置1没有插入)但是位置可以重复:将新节点插入在前一个位置占用者之前的位置。(例如:如果位置1有x,并且新节点插入位置1有y,则位置1现在有y,位置2有x) 我需要获取用户输入的位置号,并检索该位置的当前人员,但我

  • 问题内容: 说我有XML: 如何在As和C之间插入“ nodeB”?在PHP中,最好通过SimpleXML?喜欢: 问题答案: 以下是在其他一些SimpleXMLElement之后插入新的SimpleXMLElement的函数。由于使用SimpleXML不可能直接做到这一点,因此它在幕后使用了一些DOM类/方法来完成工作。 以及如何使用它的示例(特定于您的问题): 如果您想/需要解释它是 如何 工

  • 问题内容: 使用时应该遵循哪种目录结构?例如,如果我正在构建WSGI应用程序并创建了一个称为virtualenv的虚拟环境,那么它将以类似以下的目录结构开始: 创建此环境后,将在哪里放置自己的环境: python文件? 静态文件(图像/等)? “自定义”程序包,例如在线提供的但在奶酪商店中找不到的程序包? 关于目录? (假设我已经知道virtualenv目录本身应该在哪里。) 问题答案: 提供py

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

  • 问题内容: 我正在编写一个脚本,要求我在配置文件的特定部分中添加行。例如 之前: 后: 如您所见,添加了新行。我的bash脚本如何插入行?我猜我将需要使用sed。 问题答案: 如果要在特定字符串匹配之后添加一行:

  • 问题内容: 假设我有一个大小为n的对象的ArrayList。现在,我想在特定位置插入另一个对象,比方说在索引位置k(大于0且小于n),并且我希望索引位置k或之后的其他对象向前移动一个索引位置。因此,有什么方法可以直接在Java中执行此操作。实际上,我想在添加新对象时保持列表排序。 问题答案: 要 插入 的特定索引,使用值到ArrayList中: 此方法将移动列表的后续元素。但是您不能保证列表会保持