散列表双链表处理冲突删除操作O(1)

这两天在看算法导论散列表的时候,遇到一个问题,为何采用双链表处理冲突的删除操作只需O(1),后来发现删除操作的输入是x,而不是k,x是指向一片内存区域的指针,这片内存区域用来存放k以及相关信息。
对于单链表,比如现在我们要删除k2,对应的指针暂定为x2,假设其前驱k1,对于指针x1,删除k2时,其实我们现在知道的信息也就是x1->next = x2,但是我们没有x1,所以我们无法改变x1->next,只是知道它等于x2而已,所以单链表必须得从头来,跟查找操作一个意思了就(查找操作的输入是k,不是x),所以为了删除方便,还是用双链表比较好,就比如上例,通过x2,可以找到x1和后继(假设是x3),只需改变x1和x3的相应的指针域即可。这大概就是我的理解,所以在此记录一下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值