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仍然是一个空指针。