题目描述
给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点。
假设链表一定存在,并且该节点一定不是尾节点。
样例
输入:链表 1->4->6->8
删掉节点:第2个节点即6(头节点为第0个节点)
输出:新链表 1->4->8
直接上例子 1 - 2 - 3 - 4 - 5 - 6
要删掉3这个数即位置2
(类似赋值)令位置2的值为 node->val = node->next->val
这个操作就是把要删除的那个位置赋值成下一个位置 那么要删除的数首先就不见了
现在多出了3这个位置即4这个数
最后我们把四这个数删掉即把位置2(要删掉的3)这个位置的next指向它下一个位置的next
node->next = node->next->next
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void deleteNode(ListNode* node)
{
node->val = node->next->val; // 当前节点的值为下个节点的值
node->next = node->next->next; // 跳过下一个节点
}
};