【编程之美】从无头单链表中删除结点

本文介绍了一种特殊情况下单链表中间节点的删除方法。即已知一个指向待删节点的指针,但链表没有头指针的情况下,通过复制后续节点的数据并调整指针来完成删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 问题:假设有一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(不是第一个也不是最后一个),如何将该结点删除?

  分析:假设给定的指针为pCurrent,Node *pNext=pCurrent->Next(pNext指向pCurrent的下一个结点)。根据题意,pNext!=NULL.

若pCurrent指向中间要删除的节点B,如下图所示:

但是该链表没有头指针,无法扫描到结点A。但是我们可以换一种思路,可以将结点C的数据赋给B,然后将真正的C结点删除,因为删除C结点是很方的,知道其前驱结点。这种方法很妙,结点都是一样的,只是其中的data不一样,现在我们可以把data复制给B结点,再删除真正的C结点,留下的是“假”的C结点。

pCurrent->Next=pNext->Next;

pCurrent->Data=pNext->Data;

delete pNext;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值