我正在寻找这些伪代码操作的最佳数据结构:
add/update(key, node-content);
node=walk/iterate();
delete(node);
我会做一个哈希表,但是不可能以有效的方式遍历/遍历它(需要检查所有桶)。目前,我认为rbtree,但我的怀疑是围绕这样一个事实,即我需要在每次添加/删除操作时重新平衡它,保持全局树互斥量大概......任何人都可以分享一些专业知识,最佳选择是什么?
更新我想扩展所搜索数据结构的使用范围,因为它会澄清到目前为止所提出的问题。
结构最多只有几百个节点 - 所以不是那么大。最常见的操作是walk()
,其中每个节点都是轮流读取的,顺序无关紧要。 walk()
每秒可以发生一千次。到目前为止,链表或甚至数组都可以。
第二个最常见的操作是更新(node-key,node-content)。这是需要高效搜索的地方。该操作可能每秒发生数百次。因此,哈希表很有吸引力。
有时会添加一个节点 - 当update()找不到现有节点时 - 或删除。 Add()
/ delete()
很少发生,例如每天一次 - 因此这些操作的成本无关紧要。
UPDATE2 我认为这是对相关结构的一个非常好的回顾。目前我倾向于skiplist