剑指offer面试题13:O(1)删除链表结点

面试题见剑指offer:

struct ListNode 
{ 
    int value; 
    ListNode *next; 
}; 
void DeleteNode(ListNode **pListHead,ListNode * pToBeDeleted)
{
	if(!pListHead||!pToBeDeleted)
	return;
	if(pToBeDeleted->next)
	{
		ListNode *pNext=pToBeDeleted->next;
		pToBeDeleted->value=pNext->value;
		pToBeDeleted->next=pNext->next;
		delete pNext;
		pNext=NULL;
	}
	else if(*pListHead==pToBeDeleted)
	{
		delete pToBeDeleted;
		pToBeDeleted=NULL;
		*pListHead=NULL;
	}
	else
	{
		ListNode *pNode=*pListHead;
		while(pNode->next!=pToBeDeleted)
			pNode=pNode->next;
		pNode->next=NULL;
		delete pToBeDeleted;
		pToBeDeleted=NULL;
	}
}

 

posted @ 2013-01-04 18:54  代码改变未来  阅读(220)  评论(0编辑  收藏  举报