在O(1)时间删除链表结点
已知要删除节点的地址
可以将该节点伪装成下一节点,同时删去下一节点,然后建立新的连接关系
地址不变,但是值变了
/**
* 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;
//或者用如下语句,一条语句即可解决问题
//*node = *(node->next); //val 和 next 都被赋过去了
}
};