在数据结构中学到过,主要就是注意使用情况,每种情况都考虑到,具体代码如下:
void DeleteNode(ListNode *pListHead, ListNode *pToBeDeleted)
{
if(pListHead == NULL || pToBeDeleted == NULL)
{
return ;
}
if(pListHead == pToBeDeleted)
{//if删除的是头节点
pListHead = pListHead->m_pNext;
free(pToBeDeleted);
}
else if(pToBeDeleted->m_pNext==NULL)
{//删除最后一个节点,需要遍历删除
ListNode *pnode = pListHead;
while(pnode->m_pNext != pToBeDeleted)
{
pnode = pnode->m_pNext;
}
pnode->m_pNext = NULL;
free(pToBeDeleted);
}
else
{
pToBeDeleted->m_nValue = pToBeDeleted->m_pNext->m_nValue;
ListNode *ptemp = pToBeDeleted->m_pNext;
pToBeDeleted->m_pNext = pToBeDeleted->m_pNext->m_pNext;
free(ptemp);
}
}