题解 | #删除链表的节点#

删除链表的节点

https://www.nowcoder.com/practice/f9f78ca89ad643c99701a7142bd59f5d

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @param val int整型 
     * @return ListNode类
     */
      public ListNode deleteNode(ListNode head, int val) {

        // 1、创建返回结果
        ListNode res = head;

        // 2、判断第一个是不是要删除的节点
        if (head.val == val) {
            // 第一是的话,跳过这个节点,并返回
            head = head.next;
            return head;
        }


        // 3、遍历,找到要删除的节点 head.next.val != val 时进入循环
        while (head.next.val != val) {
            // 不是目标值,跳过这个节点
            head = head.next;
        }

        // 4、找到目标值后跳出循环,跳出循环向下执行,说明链表当前值与val相等,执行链表删除操作。
        //  说明:因为在while循环中head指向了下一个节点,所以此时head表示为前一个节点,head.next表示为目标节点,head.next.next 表示下一个节点
        //       所以,将前一个节点的next直接连接到下一个节点,达到了删除节点的效果,
        head.next = head.next.next;

        return res;

    }

}

注意res的作用: 只有当head.next 变化时 res才有变化

全部评论

相关推荐

11-27 14:21
同济大学 Java
卢来猴祖:给了这薪资关键拿不了几个月就给你踹了呀
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务