237. 删除链表中的节点
1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public:
void deleteNode(ListNode* node) {
ListNode* prev = node;
while(node->next){
int val = node->next->val;
node->val = val;
prev = node;
node = node->next;
} // 最后一个节点
prev->next = NULL;
}
};

即便如此,这份代码还是过于冗余,这本质上还是将待删除的节点的值改为下一个节点的值,然后指向下一个节点的指向。

1
2
3
4
5
6
7
8
class Solution {
public:
// 题目已保证不是链表最后一个节点
void deleteNode(ListNode* node) {
node->val = node->next->val;
node->next = node->next->next;
}
};

示意图如下:

237. 删除链表中的节点.png