可搜索的堆栈

Searchable stack

本文关键字:堆栈 搜索      更新时间:2023-10-16

我正在寻找一种类似堆栈的数据结构,它允许对内容进行有效的搜索。实际上,我想要一个既能保持元素插入顺序的结构,又能按元素的值比0 (n)更快地搜索(为了防止重复)。

元素很小(指针),我主要关心的是内存效率,所以简单地使用两个互补的数据结构(一个用于维护顺序,一个用于搜索)肯定不是理想的。

不要低估两种数据结构的内存效率。您应该先尝试直接的boost多索引容器库,看看它的内存占用是否足够。

我想到的第一个不太常见的数据结构是跳跃表;但是,这个列表不起作用,因为您搜索的键与您排序的键不同。对于其他有同样想法的人,请注意。

如果您主要关注的是内存效率,那么您最好使用原始链表数据结构。线性搜索的复杂度并没有那么糟糕,除非你已经证明了它的逆。

或者你可以尝试使用任何数据结构,它提供了一个有效的搜索与两个小升级:每个元素应该包含一个链接到前面添加的元素,所以做一个反向列表,你应该存储一个链接到这个列表的头,即最后添加的元素。这些升级需要简化推入和弹出元素