剑指offer 18 删除链表的节点(gt版本)

github版本,单指针(此方法非常巧妙),cur是被删除节点的前一个节点,当cur.next不为空时把cur.next.next赋给cur.next。 不用判断cur.next.next是否为空,就算它为空,说明待删除节点是尾结点,cur.next.next为null,将null赋给cur.next即删除了尾结点

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode deleteNode(ListNode head, int val) {
        if (head == null) return null;
        if (head.val == val) return head.next;
        ListNode cur = head;
        while (cur.next != null && cur.next.val != val)
            cur = cur.next;//循环至cur.next节点是待删除节点
        if (cur.next != null)
            cur.next = cur.next.next;
        return head;

    }
}
全部评论

相关推荐

程序员牛肉:你这其实一点都没包装,标准的流水线产品。 实习现在不一定能解决你的问题,你太浮躁了。你看了多少源码?看了多少技术博客?真的没必要这么浮躁的着急找实习,沉下心来学习
投递实习岗位前的准备
点赞 评论 收藏
分享
10-28 17:30
已编辑
华东交通大学 Java
想进开水团喝开水:字节的hr的本职工作就是黄金矿工
秋招笔试记录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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