一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指向的节点?

一般情况下,我们删除节点时是知道待删除节点的前节点和后节点。

但是对于标题中的情况,我们只知道当前节点和其后节点以及其后后节点、大后节点,反正就是不会知道其前节点。

那么怎么办呢?既然我们只熟悉在知道前节点后节点的情况,那么就我们就往这个情况上靠。

那么怎么靠呢?我们现在只知道当前节点,那么就一定知道其后面的多个节点,所以就借用其后节点,重新构建我们熟悉的前节点、待删除节点、后节点的形式。

既然要删除的节点不知道其前节点,那么就把待删除的节点和它的后节点交的数据进行交换,这样待删除的节点就有了前节点。

就可以进行删除,再进行连接。

所以设指向待删除节点的指针为p,设其后节点为q;

q=p->next;

//数据交换

temp = q->data;

q->data = p->data;

p->data = temp;

p->next = q->next;//重新建立连接

free(q);

 

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值