将下一个节点的内容复制到要删除的那个节点上覆盖原来的内容,再把下一个节点删除,就相当于将当前要删除的节点删除了。
#include<iostream>
using namespace std;
struct ListNode
{
int m_nValue;
ListNode* m_pNext;
};
void DeleteNode(ListNode** pListHead, ListNode* pToBeDelete)
{
if (!pListHead || !pToBeDelete)
return;
if (pToBeDelete->m_pNext != NULL)
{
ListNode* pNext = pToBeDelete->m_pNext;
pToBeDelete->m_nValue = pNext->m_nValue;
pToBeDelete->m_pNext = pNext->m_pNext;
delete pNext;
pNext = NULL;
}
else if (*pListHead == pToBeDelete)
{
delete pToBeDelete;
pToBeDelete = NULL;
*pListHead = NULL;
}
else
{
ListNode* pNode = *pListHead;
while (pNode->m_pNext != pToBeDelete)
pNode = pNode->m_pNext;
pNode->m_pNext = NULL;
delete pToBeDelete;
pToBeDelete = NULL;
}
}
int main()
{
}