我正在研究一个练习题,涉及设计一个直接地址表,可能有非不同的键。限制是INSERT,DELETE和SEARCH应该在O(1)时间内运行; arguments是指向set对象的指针。
一个明显的解决方案是使用链接,表条目指向链表的头部(可能为NULL)。有了这样的链接INSERT和DELETE肯定会在O(1)时间内运行,但SEARCH不会...... 任何建议,将不胜感激。
答案 0 :(得分:1)
研究STL关联容器std::unordered_set,std:unordered_map,std::unordered_multiset,std::unorderd_multimap的设计,具体取决于您是否要存储{unique,non-unique}和{键,键值}。如果您没有C ++ 11编译器(例如MSVC ++> = 2010或gcc> = 4.4),您可以使用Boost.Unordered。
<强>更新强> 如果您专门寻找C库:请查看http://attractivechaos.wordpress.com/2008/09/02/implementing-generic-hash-library-in-c/