zoukankan      html  css  js  c++  java
  • 时间为O(1)删除节点的代码

    void RemoveNode(ListNode** pHead,int value)
    {
      if(pHead==NULL||*pHead==NULL)
         return;
        ListNode*pToBeDeleted=NULL;
        if((*pHead)->m_nValue==value)
        {
            pToBeDeleted=*pHead;
            *pHead=(*pHead)->m_pNext;
        }
        else
        { 
        ListNode*pNode=*pHead;
        while(pNode->m_pNext!=NULL&&pNode->m_pNext->m_nValue!=value)
        pNode=pNode->m_pNext;
        if(pNode->m_pNext!=NULL&&pNode->m_pNext->m_nValue==value)
         {
            pToBeDeleted=pNode->m_pNext;
            pNode->m_pNext=pNode->m_pNext->m_pNext;
         } 
       }
       if(pToBeDeleted!=NULL)
       {
         delete pToBeDeleted;
         pToBeDeleted=NULL;
       }  
    }

    上面代码中,我们要特别注意函数的第一个参数pHead是一个指向指针的指针,当我们往一个空链表中插入一个节点是,新插入的节点就是链表的头指针。由于此时会改动头指针,因此必须把pHead参数设为指向指针的指针,否则出了这个函数pHead仍然是一个空指针。
  • 相关阅读:
    Count_sort C++
    Priority_Queue C++
    HeapSort C++
    Randomized_QuickSort C++
    QuickSort c++
    我的开发环境
    github and eclipse
    centos 7 install eclipse cdt and use github
    github commands
    文化-梁晓声
  • 原文地址:https://www.cnblogs.com/lyunyu/p/3034459.html
Copyright © 2011-2022 走看看