【简单】删除链表的节点 - 2.22

106 阅读1分钟

题目链接:

题解:

/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @param val int整型 
 * @return ListNode类
 */
function deleteNode( head ,  val ) {
    // write code here
    // 定义dummy结点,确保head结点能一直访问到
    const dummy = new ListNode() 
    dummy.next = head
    let cur = dummy // 定义指针,用于遍历
    // 如果下个结点存在,才考虑继续循环
    while (cur.next) {
        // 如果下个结点存在,并且它的值等于val
        if (cur.next.val === val) {
            // 跳过该结点,也就是删除
            cur.next = cur.next.next
            // 返回链表头结点
            return dummy.next
        } else {
            // 到了链表尾部,或者下个节点的val不等于val
            cur = cur.next
        }
    }
}

总结:

删除链表结点,关键是定位到要删除结点的前一个结点,使用 cur.next = cur.next.next 可以删除该结点