您的位置:首页 > 编程语言

编程之美:从无头单链表中删除节点

2012-08-18 13:26 344 查看
1.问题描述

假设有一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个),请将该节点从单链表中删除。

如下图所示:



2.分析与解法

假设给定的指针为pCurrent, Node* pNext = pCurren->next

其中pCurren->next!=NULL,如下图,因为没有头结点,删除pCurren指向的节点B就很困难,而删除节点C就非常容易,于是就现将节点C当中的数据等信息拷贝到节点B上,覆盖节点B原来的数据,然后删除节点C。

删除之前



删除之后



3.代码实现

struct Node
{
int data;
Node* next;
};

void DeleteRandomNode(Node* pCurrent)
{
if(pCurrent == NULL)
return;
Node* pNext = pCurrent->next;

pCurrent->data = pNext->data;
pCurrent->next = pNext->next;

delete pNext;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: