周围有一些数据结构非常有用,但大多数程序员都不知道。他们是哪一个?

每个人都知道链表、二叉树和散列,但比如Skip列表和Bloom过滤器。我想知道更多不太常见但值得了解的数据结构,因为它们依赖于伟大的想法,丰富了程序员的工具箱。

PS:我还对舞蹈链接等技术感兴趣,这些技术巧妙地利用了通用数据结构的财产。

编辑:请尝试包含更详细描述数据结构的页面链接。此外,试着补充几句关于数据结构为什么很酷的话(正如乔纳斯·Kölker已经指出的那样)。此外,尝试为每个答案提供一个数据结构。这将允许更好的数据结构仅根据其投票结果浮到顶部。


当前回答

循环或环形缓冲区-用于流式传输等。

其他回答

张开树怎么样?

此外,Chris Okasaki的纯功能数据结构也在脑海中浮现。

空间索引,特别是R-树和KD树,有效地存储空间数据。它们适用于地理地图坐标数据和VLSI位置和路线算法,有时也适用于最近邻搜索。

位阵列紧凑地存储单个位,并允许快速位操作。

角落缝合的数据结构。根据总结:

拐角缝合是一种用于表示矩形二维对象。看起来特别适合VLSI交互式编辑系统布局。数据结构有两个重要特征:第一,空白明确表示;第二,矩形区域被缝合在他们的角落像一个拼缝被子。此组织快速算法的结果(线性时间或更好),创建、删除、拉伸和压实。算法如下以简化模型VLSI电路和存储器结构要求如下讨论。测量结果表明拐角缝合要求大约三倍尽可能简单的存储空间代表。

Splash桌很棒。它们就像一个普通的哈希表,只是它们保证了恒定的时间查找,并且可以处理90%的利用率而不损失性能。它们是布谷鸟哈希(也是一种很棒的数据结构)的推广。它们看起来确实有专利,但和大多数纯软件专利一样,我不会太担心。

Kd-Trees是实时光线跟踪中使用的空间数据结构,它的缺点是需要裁剪与不同空间交叉的三角形。一般来说,BVH更快,因为它们更轻。MX-CIF四叉树,通过将规则四叉树与四叉树边缘的二叉树组合,存储边界框而不是任意点集。HAMT,由于所涉及的常数,访问时间通常超过O(1)个哈希图的分层哈希图。反向索引,在搜索引擎界非常有名,因为它用于快速检索与不同搜索词相关的文档。

大多数(如果不是全部)记录在NIST算法和数据结构词典中