java算法:删除链表的节点

问题

  • 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。

解决

 //1.利用指示指针实现
class Solution {
    public ListNode deleteNode(ListNode head, int val) {
        //一般删除修改这类操作都要定义一个虚拟结点进行操作
        if(head==null) return head;
        if(head.val==val) return head.next;

        ListNode cro=head;
        while(cro.next!=null&&cro.next.val!=val){        //将遍历链表直到遇到目标值
            cro=cro.next;
        }
        if(cro.next!=null) cro.next=cro.next.next;  //当遇到目标值的时候跳过目标值
        return head;
    }
}
//2.递归实现
class Solution {
    public ListNode deleteNode(ListNode head, int val) {
        if (head == null) {
            return null;
        }
        if (head.val == val) {
            return head.next;
        } else {
            head.next = deleteNode(head.next, val);         //递归实现,当遇到目标值时,就跳过目标值
        }
        return head;
    }
}

总结

posted @   new_monkey  阅读(87)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示