剑指Offer-在O(1)时间删除链表结点

81 阅读1分钟

题目

给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点。

假设链表一定存在,并且该节点一定不是尾节点。

数据范围

链表长度 [1,500][1,500]。

样例

输入:链表 1->4->6->8
      删掉节点:第2个节点即6(头节点为第0个节点)

输出:新链表 1->4->8

解析

将后一个结点的值赋给当前结点,然后直接删除后一个结点

代码

Go

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