牛客网:AB12 删除链表的节点

链表的数据结构就是每一个节点和下一个节点是链接在一起的。

思路: 定义一个哑元节点
       找到要删除节点的前一个节点
       删除的前一个节点的下一个节点就是要删除的节点,那么删除的前一个节点的下下个节点就是删除节点的前一个节点的下一个节点。

注意删除的节点是最后一个节点的情况。



/**
 * @author xienl
 * @description AB12 删除链表的节点
 * @date 2022/6/1
 */

public class Solution {

    public static void main(String[] args) {
        Solution solution = new Solution();
        ListNode node = new ListNode(4, new ListNode(5, new ListNode(1, new ListNode(9))));
        node = solution.deleteNode(node, 1);
        node.print();
    }

    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param head ListNode类
     * @param val int整型
     * @return ListNode类
     *
     * 思路: 定义一个哑元节点
     *       找到要删除节点的前一个节点
     *       删除的前一个节点的下一个节点就是要删除的节点,那么删除的前一个节点的下下个节点就是删除节点的前一个节点的下一个节点。
     */
    public ListNode deleteNode (ListNode head, int val) {
        // write code here
        // 定义一个哑元节点
         ListNode dummy = new ListNode(-1);
         dummy.next = head;
         // 定义下一个节点
         ListNode next = dummy;
         // 如果下一个节点不等于null,并且他的值也不等于我们要删除的节点,当前节点变成下一个节点
         while (next.next != null && next.next.val != val){
             next = next.next;
         }
         // 取下下个节点当下一个节点
         next.next = next.next == null ? null : next.next.next;
         return dummy.next;

    }
}

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

    public ListNode(int val, ListNode next){
        this.val = val;
        this.next = next;
    }

    public void print(){
        System.out.print(this.val + " ");
        if (this.next != null){
            this.next.print();
        }
    }
}

六一儿童节快乐。一起刷题的私聊哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值