剑指offer——19删除链表的节点


题目一:

  在O(1)时间内删除链表节点。给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。

 

书本讲得不明就里

 1 class Solution {
 2     void DeleteNode(ListNode **listHead, ListNode *toDeleteNode) {
 3         if (listHead == nullptr || toDeleteNode == nullptr)return;    
 4         if (*listHead == toDeleteNode)
 5             *listHead = (*listHead)->next;
 6         else
 7         {
 8             ListNode* p = *listHead;
 9             while (p->next != nullptr)
10             {
11                 if (p->next == toDeleteNode)
12                 {
13                     p->next = toDeleteNode->next;
14                     break;
15                 }
16                 p = p->next;
17             }
18         }
19     }
20 };

 

posted @ 2019-10-11 22:10  自由之翼Az  阅读(116)  评论(0编辑  收藏  举报