关于数据结构里的惰性删除,该怎么处理
关于数据结构里的惰性删除
数据结构和算法里经常遇到这个术语,开始没在意,当我研究到散列第3次碰到它,可我这本书没讲怎么实现,然后我自己思考是不是就如我上面代码所描述的呢?
比如说我要删掉一个元素,也就是要删掉一个节点,但是我并不删除我只把里面的elementStatus置为DELETED;
然后我再插入相同的元素,这个时候我在把节点里的elementStatus置为ACTIVE
这样我就不需要来回的释放和分配内存了,是不是就是这个意思?
------解决方案--------------------
bingo
------解决方案--------------------
完全正确。
一些高性能算法里会适当的使用这个技巧,以减少内存分配带来的开销。
- C/C++ code
enum Status {EMPTY,ACTIVE,DELETED}; template<class Object> struct Node { Object element; Status elementStatus; };
数据结构和算法里经常遇到这个术语,开始没在意,当我研究到散列第3次碰到它,可我这本书没讲怎么实现,然后我自己思考是不是就如我上面代码所描述的呢?
比如说我要删掉一个元素,也就是要删掉一个节点,但是我并不删除我只把里面的elementStatus置为DELETED;
然后我再插入相同的元素,这个时候我在把节点里的elementStatus置为ACTIVE
这样我就不需要来回的释放和分配内存了,是不是就是这个意思?
------解决方案--------------------
bingo
------解决方案--------------------
完全正确。
一些高性能算法里会适当的使用这个技巧,以减少内存分配带来的开销。