为什么他不遵循代码在链表中的特定位置插入节点



请看下面的代码,让我知道它有什么问题?我正在尝试在链表中的给定特定位置插入节点。我们需要在插入后返回对头节点的引用。

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;
}

是的,有问题。在while循环之后,您正在尝试在head之前插入newNode,但这不起作用。线路head=newNode;是没有用的。

要么你需要另一个指针在head之前指向节点,以便你可以在这两个指针之间插入newNode,要么你需要在一步之前停止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;

[编辑]

在此解决方案中,您需要通过在while循环之前添加以下代码来处理position等于 0 的特殊情况:

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

相关内容

  • 没有找到相关文章

最新更新