237. 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。
/**
* 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;
}
};
解答:首先这是一个单链表,然后他只给了你要删除的节点,所以你无法找前面的节点只能找后面的节点。那么问题来了这样就无法直接删除当前节点了。所以换一个思路:只能删除后面的额节点那就把后面的节点拷贝到这个点,然后在删除后面被拷贝的节点即可。
想了老半天