可搜索的堆栈
Searchable stack
我正在寻找一种类似堆栈的数据结构,它允许对内容进行有效的搜索。实际上,我想要一个既能保持元素插入顺序的结构,又能按元素的值比0 (n)更快地搜索(为了防止重复)。
元素很小(指针),我主要关心的是内存效率,所以简单地使用两个互补的数据结构(一个用于维护顺序,一个用于搜索)肯定不是理想的。
不要低估两种数据结构的内存效率。您应该先尝试直接的boost多索引容器库,看看它的内存占用是否足够。
我想到的第一个不太常见的数据结构是跳跃表;但是,这个列表不起作用,因为您搜索的键与您排序的键不同。对于其他有同样想法的人,请注意。
如果您主要关注的是内存效率,那么您最好使用原始链表数据结构。线性搜索的复杂度并没有那么糟糕,除非你已经证明了它的逆。
或者你可以尝试使用任何数据结构,它提供了一个有效的搜索与两个小升级:每个元素应该包含一个链接到前面添加的元素,所以做一个反向列表,你应该存储一个链接到这个列表的头,即最后添加的元素。这些升级需要简化推入和弹出元素
相关文章:
- 有根的二进制搜索树.保留与其父级的链接
- 在C++中搜索嵌套多映射值
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 二进制搜索树叶数问题
- 为什么二进制搜索在我的测试中不起作用
- 正在尝试重载二进制搜索树分配运算符
- 算法问题:查找从堆栈中弹出的所有序列
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 我可以在没有堆栈的情况下在二叉搜索树中实现迭代器吗?
- C++:如何使用堆栈搜索报价
- 二进制搜索树递归插入导致堆栈溢出,迭代插入不起作用
- 为什么这个二叉搜索树会导致堆栈溢出
- 在迭代深度优先搜索(DFS)算法中确定堆栈大小
- 二进制搜索树创建堆栈-overfow
- 可搜索的堆栈
- 在堆栈中搜索值并存储在临时堆栈中
- 使用堆栈的非递归析构函数二叉搜索树
- 在哪里实现堆栈类(在非递归二进制搜索函数中使用)
- 递归地搜索堆栈,但保持堆栈完整
- 在std::map中搜索时堆栈溢出