/*在O(1)复杂度内删除指定节点*/
void deleteNode(LinkNode *& pHead, LinkNode * pDelNode)
{
if(pHead == NULL)
cout<<"链表为空\n";
if(pDelNode == NULL)
cout<<"所删除节点不存在\n";
if (pDelNode != pHead && pDelNode->_next != NULL)///中间节点
{
LinkNode * pTemp = pDelNode->_next;
pDelNode->_value = pDelNode->_next->_value;
pDelNode->_next = pDelNode->_next->_next;
delete pTemp;
pTemp = 0;
}
else if (pDelNode == pHead)////被删除的是头结点
{
pHead = pDelNode->_next;
delete pDelNode;
}
else if(pDelNode->_next == NULL)
{
LinkNode * pTemp = pHead;
while(pTemp->_next != pDelNode)
pTemp = pTemp->_next;
pTemp->_next = NULL;
delete pDelNode;
}
}