删除链表中的节点

#include <iostream>
using namespace std;
struct ListNode
{
    int m_nValue;
    ListNode *m_pNext;
};
void DeleteNode(ListNode **pListHead, ListNode *pToBeDeleted)
{
  if(!pListHead||!pToBeDeleted)
      return;
  if(pToBeDeleted->m_pNext!=nullptr)
  {
      ListNode *pNext=pToBeDeleted->next;
      pToBeDeleted->m_nValue=pNext;
      pToBeDeleted->m_pNext=pNext->m_pNext;

      delete pNext;
      pNext=nullptr;
  }
  else if(pToBeDeleted==*pListHead)
  {
      delete pToBeDeleted;
      pToBeDeleted=nullptr;
      *pListHead=nullptr;
  }
  else
  {
      ListNode *pList=*pListHead;
      while(pList->m_pNext!=pToBeDeleted)
      {
          pList=pList->m_pNext;
      }
      pList->m_pNext=nullptr;
      delete pToBeDeleted;
      pToBeDeleted=nullptr;
  }
}

猜你喜欢

转载自blog.csdn.net/jacoob1024/article/details/80240796