在O(1)复杂度内删除指定节点
/*在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; } }