- Remove an unnecessary assignment
- Add a reference to let changes on `p` take effect outside the function
- Free the `Node` after deletion to avoid potential memory leak
Thanks for the help of @TechCiel and @mcfxmcfx.
```c++
void deleteNode(Node *p) {
p->value = p->next->value;
+ Node *t = p->next;
p->next = p->next->next;
+ delete t;
}
```
### 双向循环链表
```c++
-void deleteNode(Node *p) {
- p->value = p->right->value;
+void deleteNode(Node *&p) {
p->left->right = p->right;
p->right->left = p->left;
+ Node *t = p;
p = p->right;
+ delete t;
}
```