剑指Offer 18. 删除链表的节点

xiaoXingcode-go / 2023-08-26 / 原文

题目链接: 剑指Offer 18. 删除链表的节点

题目描述:

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

返回删除后的链表的头节点。

解法思路:

由于包含删除第一个节点的情况,因此采用虚拟头节点,
当遍历时找到待删除节点的前驱节点时,删除节点即可

代码:

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func deleteNode(head *ListNode, val int) *ListNode {

    if head == nil {
        return nil
    }
    dummy:= &ListNode{Next:head}
    p := dummy
    for p.Next != nil {
        if p.Next.Val == val{
            p.Next = p.Next.Next
            break
        }
        p = p.Next
    }
    return dummy.Next
}