剑指 Offer 18. 删除链表的节点
分两种:
- 给了前驱结点的;
- 不给前驱节点,把后继节点的值复制到本节点,然后删除本节点。
//给定头结点 只给要删除值の情况下 删除节点func deleteNode(head *ListNode, val int) *ListNode {dummy := &ListNode{Next: head}pre := dummyfor head != nil {if head.Val == val {pre.Next = head.Next} else {pre = pre.Next}head = head.Next}return dummy.Next}
//不给头节点,只给要删除的点,不给匹配的值
func deleteNode(node *ListNode) {
node.Val = node.Next.Val
node.Next = node.Next.Next
}
