📌  相关文章
📜  Javascript 程序在倒数第 N 个节点之后插入一个节点(1)

📅  最后修改于: 2023-12-03 15:31:45.346000             🧑  作者: Mango

Javascript 程序在倒数第 N 个节点之后插入一个节点

有时候我们需要在一个链表中插入新的节点,而这个链表可能是单向链表,我们只能从链表头遍历到尾部才能到达某个节点。如果我们需要在倒数第N个节点之后插入一个新的节点,那么我们就需要从链表的尾部开始往前跳N个节点,然后再进行插入。在JavaScript中这也非常容易实现,下面是代码片段:

function addNodeAfterLastN(head, n, newNodeValue) {
    // 定义两个指针,pre指针先到第n-1个节点,cur指针在pre之前
    let pre = head;
    let cur = head;
    for (let i = 0; i < n; i++) {
        if (cur.next === null) {
            // 当链表元素不足N时,返回null
            return null;
        }
        cur = cur.next;
    }
    while (cur.next !== null) {
        pre = pre.next;
        cur = cur.next;
    }
    // 在倒数第n个节点之后插入新节点
    let newNode = new Node(newNodeValue);
    newNode.next = pre.next;
    pre.next = newNode;
    // 返回新的head节点
    return head;
}

以上代码中,我们先定义了两个指针,分别指向链表头部,然后从头部开始遍历链表,找到第n个节点,此时cur指针比pre节点多距离n个节点,再依次移动pre和cur指针,直到cur指针到达最后一个节点,此时pre指针就指向了倒数第N个节点,接着在其后面插入新节点即可。

需要注意的是,在插入新节点前需要判断链表元素个数是否足够N个,否则插入的位置是不存在的,这时我们需要返回null。同时,我们需要定义链表节点类Node,保证链表的正确性。

class Node {
    constructor(value) {
        this.value = value;
        this.next = null;
    }
}

以上就是在Javascript中实现对链表在倒数第N个节点之后插入新节点的代码片段,希望对你有所帮助!