题目:
给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
函数的声明如下:
void DeleteNode(ListNode* pListHead, ListNode* pToBeDeleted);
分析:
如果需要删除pToBeDeleted指向的节点,常规做法则需要找到前驱, and then(你懂的).
而此题的做法,就是让pToBeDeleted充当pToBeDeleted->m_pNext的功能,然后将pToBeDeleted->m_pNext释放
不过,当pToBeDeleted->m_pNext为NULL时,只能常规做法了、
代码: