Data structures 基本数据结构列表-我缺少什么?
最近,我一直在研究我的基本数据结构,试图确保我已经把它们完全搞定了 我所说的“基础”,是指真正的基础。像红黑树和布鲁姆过滤器这样的花式过滤器显然值得了解,但它们通常要么是基本过滤器的增强(红黑树是具有特殊属性以保持平衡的二元搜索树),要么只在非常特定的情况下有用(布鲁姆过滤器) 到目前为止,我对以下数据结构“熟练”:Data structures 基本数据结构列表-我缺少什么?,data-structures,computer-science,Data Structures,Computer Science,最近,我一直在研究我的基本数据结构,试图确保我已经把它们完全搞定了 我所说的“基础”,是指真正的基础。像红黑树和布鲁姆过滤器这样的花式过滤器显然值得了解,但它们通常要么是基本过滤器的增强(红黑树是具有特殊属性以保持平衡的二元搜索树),要么只在非常特定的情况下有用(布鲁姆过滤器) 到目前为止,我对以下数据结构“熟练”: 阵列 链表 堆栈/队列 二叉搜索树 堆/优先级队列 哈希表 然而,我觉得我错过了什么。有什么基本的东西我都忘了吗 编辑:在发布问题后添加这些内容 字符串(由catchmeif
- 阵列
- 链表
- 堆栈/队列
- 二叉搜索树
- 堆/优先级队列
- 哈希表
- 字符串(由catchmeifyoutry建议)
- 布景(彼得建议)
- 图表(由Nick D和aJ建议)
- B-树(由tloach建议)
- 我有点犹豫这些是否太花哨了,但我认为它们与基本结构(也足够重要)不同,值得作为基本结构进行研究
你已经忘记了基本的::和./p>< p>树和其他多棵树 < p>我会添加地图,除非你想把它放在集合之下。 因为它们是建模问题的基础,例如:
- 图表
- 仿射变换
- 求解线性系统
- 马尔可夫链
- 等
字符串,尽管它们可以在引擎盖下实现为数组(其他一些数据结构也是如此) 任何与用户交互的程序都将使用字符串。
知道如何操作字符串很重要。有些字符串可能被认为不如其他字符串重要:
- 数学向量/矩阵
- 图、邻接列表/矩阵
- 尝试前缀/后缀树
- 空间索引-四叉树/kd树r-树
- 流/序列空终止字符串/大整数
s,作为最简单的空间索引。
不是基本的,但它非常方便,它可以用整数(和位运算符)有效地表示
< P>。它们是一些图形算法的基础。关联数组是表示字典、地图等的通用方式。几乎在每个框架中都可以找到此外,如果我可以指定一个非基本数据结构,它将是Clojure中的持久位分区前缀哈希尝试。一般来说,我认为持久性是任何数据结构的一个非常重要且经常被忽略的属性。Cons cell。使用它,您可以构建其他几个数据结构(列表、树等)
我认为你的问题不清楚,因为你把实现和目的混为一谈 以下类型描述了实现:
- 链表
- 双链表
- 排列
- 哈希表
- (二元)树
- “托管”(二进制)树(堆、水平树等,即插入和删除不是直接完成的树,而是通过确保树的某些约束的过程完成的树)
- 图表(尽管非常花哨)
- 堆栈(表示FILO&可以通过链表实现,也可以通过数组或向量实现)
- 队列(意味着先进先出&可以通过一个双链表实现,也可以通过其他合理的方式实现)
- 出列(…)
- 优先级队列(表示“最高/最低密钥优先”这是一个抽象概念,可以在中实现)
- 映射/关联数组/字典(表示将键映射到值。通常需要额外的函数将键转换为基础哈希表或树的有效键)
- 集合(意思是说,它是一个集合,它是可编辑的,可以判断一个值是否是集合中的一个元素。集合中的每一个值在迭代过程中都必须精确显示一次。集合可以是可变的,也可以是不可变的(可以允许添加或删除元素)。可以提供求交、并、差的例程(例如,作为OOP中的方法)。当涉及到实现时,有许多可能性)
(在“cord”库中实现的)是我最喜欢的“string”抽象数据结构的实现,但它可能并不是真正的“基本”结构。堆和prio队列可以被归类为奇特的:几乎所有超出数组和链表的东西都可以归类为