在链接列表中插入节点的逻辑错误(Java)

时间:2016-10-17 07:35:04

标签: java linked-list

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

这是我的方法:

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 个答案:

答案 0 :(得分:0)

假设您在curr节点之后插入新节点,此循环将步骤过一步。

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

您可以通过使用笔和纸或调试器逐步完成代码来轻松解决此问题。

答案 1 :(得分:-1)

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

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;

}