剑指Offer[18]-删除链表的节点

题目

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

python代码

class Solution(object):
    def deleteNode(self, head, val):
        """
        :type head: ListNode
        :type val: int
        :rtype: ListNode
        """
        bp_head = ListNode(0)
        bp_head.next = head
        if head.val==val:
            return head.next
        while head.next:
            if head.next.val==val:
                head.next = head.next.next
                break
            head = head.next
        return bp_head.next

这道题属于链表里面常规的基础题,考察的点如下:

  • 一看到我们要返回链表头节点,一般情况下我们需要创建一个新的节点指向原始头节点,这个新节点不能改变,用来指示头节点。
  • 涉及到插入或者删除节点,我们都要预先判断,比如链表a->b->c,我们要在指针指向a时取判断b是否符合条件,当b需要删除时,就将a指向c即可完成删除操作。
  • 输入的节点要单独判断,原因如上。

发表评论

电子邮件地址不会被公开。