数据结构类型
1.数组(Array): 数组是存储在连续内存位置的项目的集合。这个想法是将相同类型的多个项目存储在一起。通过简单地将偏移量添加到基本值(即数组的第一个元素的存储位置)(通常由数组的名称表示),这使得计算每个元素的位置更加容易。
2.栈(Stack): 堆栈以应用操作的线性顺序存储项目的集合。 该顺序可以是后进先出(LIFO)或先进先出(FIFO)
3.队列(queue): 队列存储诸如堆栈之类的项目的集合; 但是,操作顺序只能是先进先出
4.链表 (linked list): 链表以线性顺序存储项目的集合。 链表中的每个元素或节点都包含一个数据项,以及对链表中下一项的引用或链接
5.树 (Tree): 一棵树以抽象的分层方式存储项目的集合。 每个节点都与一个键值相关联,其父节点链接到子节点(或子节点)。 有一个根节点是树中所有节点的祖先
6.堆(Heap) : 堆是基于树的结构,其中每个父节点的关联键值都大于或等于其任何子级键值的键值。
7.图(Graph): 图以非线性方式存储项目的集合。 图由有限的节点集(也称为顶点)和连接它们的线(也称为边)组成。 这些对于表示诸如计算机网络之类的真实系统很有用
8.前缀树(Trie): 前缀树,也称为关键字树,是一种数据结构,用于将字符串存储为可以在可视图中组织的数据项
9.哈希表(Hash table) :哈希表(也称为哈希图)将项目的集合存储在关联数组中,该数组将键映射到值。哈希表使用哈希函数将索引转换为包含所需数据项的存储桶数组。
如何选择数据结构
在为程序或应用程序选择数据结构时,开发人员应考虑以下三个问题的答案
- 支持的操作。该程序需要什么功能和操作?
- 计算复杂度。可以容忍什么级别的计算性能?为了提高速度,使用操作时间与所管理项目数成线性关系的数据结构(使用Big O表示法:O(n))将比其操作时间与数量的平方成正比的数据结构更快管理的项目数-O(n ^ 2)。
- 编程优雅。数据结构的组织及其功能接口是否易于使用?
一些实际示例包括:
-
如果程序正在管理不需要订购的项目的集合,从集合中添加或删除项目需要恒定的时间并且增加搜索时间是可以的,则链表是最好的
-
如果程序正在管理需要支持LIFO订单的集合,则堆栈是最好的。 如果程序正在管理需要支持FIFO顺序的集合,则应使用队列
-
二叉树非常适合管理具有父子关系的项的集合,例如家谱。 二进制搜索树适用于管理排序的集合,目标是优化在集合中查找特定项目所花费的时间。
-
如果该应用程序将分析社交媒体网络中一组个人之间的连接性和关系,则图形效果最佳
本文介绍了各种数据结构,如数组、栈、队列、链表、树、堆、图、前缀树和哈希表,并强调在选择数据结构时应考虑支持的操作、计算复杂度和编程优雅性。例如,链表适合不需要排序且频繁增删的场景,堆栈适用于LIFO操作,队列适用于FIFO操作,二叉树和图则分别在父子关系和社交网络分析中有优势。

1000

被折叠的 条评论
为什么被折叠?



