我最近一直在研究我的基本数据结构,试图确保我已经冷落它们。
“基本”,我指的是真正基本的。像红黑树和布鲁姆过滤器这样的花哨的东西显然值得了解,但它们通常要么是基本的增强(红黑树是具有特殊属性的二元搜索树以保持平衡)或者它们仅在非常有用特定情况(布卢姆过滤器)。
到目前为止,我在以下数据结构中“流利”:
然而,我觉得我错过了什么。我有什么基本的遗忘吗?
编辑:在发布问题后添加了这些
答案 0 :(得分:10)
作为一个原则,我从不说试试[anySearhEngine],但你可以查看这个列表: http://en.wikipedia.org/wiki/List_of_data_structures
答案 1 :(得分:10)
Graph data structure也是基础。
答案 2 :(得分:5)
我认为你的问题不清楚,因为你正在混合实施和目的......
以下类型描述了实现:
以下描述目的:
好吧,我认为最后一件事值得一提:algebraic data types ...取决于语言,它们要么本地存在,要么必须模仿它们...... {{3}和C#(据我所知)将是两种命令式语言,通过简单地允许枚举参数来提供它们......它们可用于实现列表,树和许多其他好东西...例如,它们是完美地代表Haxe和许多其他复杂的结构...
答案 3 :(得分:4)
B树和其他多树
答案 4 :(得分:4)
字符串,尽管它们可以作为数组实现(与其他几种数据结构一样)。
与用户交互的任何程序都将使用字符串。 知道如何操纵字符串很重要。
答案 5 :(得分:2)
缺点细胞。有了它,您可以构建其他几个数据结构(列表,树等)
答案 6 :(得分:2)
答案 7 :(得分:2)
Quadtree s,作为最简单的空间索引。
答案 8 :(得分:1)
另外,如果我可以提名一个非基本数据结构,它将是来自Clojure的持久位分区前缀Hash Tries。总的来说,我认为持久性是任何数据结构中非常重要且经常被忽视的属性。
答案 9 :(得分:1)
答案 10 :(得分:1)
Bit array不是基本的,但它非常方便,可以使用整数(和按位运算符)有效表示
答案 11 :(得分:1)
关联数组是说字典,地图等的通用方式。您几乎可以在每个框架中找到它。
答案 12 :(得分:0)
“函数对象”,“函数指针”或“闭包”无法在具有数组,链接列表等的某些限制性语言中实现。但也许它们更接近数据类型而不是数据结构。 / p>
"rope" implementation(在“cord”库中实现)是我最喜欢的“字符串”抽象数据结构的实现,但也许它并不是真正的“基础”。
答案 13 :(得分:0)
您可以考虑union/find datastructures。它们是一些图算法的基础。
答案 14 :(得分:0)
如需帮助,请阅读Java Collections文档。它们分解为抽象层(Set,List和Map)和实现层(ArraySet,HashSet,ArrayList,LinkedList,TreeMap,HashMap)。
如需帮助,请阅读Python Collections文档。它们将事物分解为抽象基类,如Set,Sequence和Map,它们是从集合的mixin特性构建的。
答案 15 :(得分:0)
Matrices因为它们可以作为建模问题的基础,例如:
答案 16 :(得分:0)
我会添加地图,除非您想要将其视为集合。
答案 17 :(得分:0)