删除链表的中间节点001

1、描述

实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。

示例:

输入:单向链表a->b->c->d->e->f中的节点c
结果:不返回任何数据,但该链表变为a->b->d->e->f

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/delete-middle-node-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2、关键字

链表、中间节点、
假定只能访问中间节点:不知道啥意思

3、思路

删除中间节点,只需要把当前节点的指向换成前一个结点的指向,就把当前节点删除了,可是说了一句,只能访问中间节点,就懵了,不知道如何开始

3、2抄

之后知道,node不是链表中的第一个节点,而是要删除的节点,而只能访问当前节点,所以就只能用next访问当前节点的后面的节点,而不能使用前一个结点,所有,把后边的节点的val值拷贝到当前节点,然后当前节点的后向next指向后一个节点的next,
就是把后一个节点拷贝到当前节点的意思。

3、3开始?

还是不知道怎么写?要遍历吗??
直接用当前node节点就好了。

4、note&con

参数列表:当前节点,还是整个链表,
如何开始

5、复杂度

时间O(N)
空间:O(1)

6、code

/*** 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;       }
};