OSDN Git Service

fix(ds): link-list.md
authorslanterns <slanterns.w@gmail.com>
Fri, 1 May 2020 19:57:42 +0000 (03:57 +0800)
committerslanterns <slanterns.w@gmail.com>
Fri, 1 May 2020 19:57:42 +0000 (03:57 +0800)
- 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.

docs/ds/linked-list.md

index 1157eb1..6fe91cf 100644 (file)
@@ -101,7 +101,9 @@ void insertNode(int i, Node *p) {
 ```c++
 void deleteNode(Node *p) {
   p->value = p->next->value;
+  Node *t = p->next;
   p->next = p->next->next;
+  delete t;
 }
 ```
 
@@ -112,10 +114,11 @@ void deleteNode(Node *p) {
 ### 双向循环链表
 
 ```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;
 }
 ```