数据结构 (计算机存储,组织数据的方式)
类别
- 逻辑结构
- 物理结构
逻辑结构
- 集合结构:集合结构的集合中任何两个数据元素之间都没有逻辑关系,组织形式松散。
- 线性结构:数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。
- 树状结构:树状结构是一个或多个节点的有限集合
- 网络结构:网络结构是指通信系统的整体设计,它为网络硬件、软件、协议、存取控制和拓扑提供标准。它广泛采用的是国际标准化组织(ISO)在1979年提出的开放系统互连(OSI-Open System Interconnection)的参考模型。
物理结构(存储结构)
顺序存储和链接存储
在顺序存储中,每个存储空间含有所存元素本身的信息,元素之间的逻辑关系是通过数组下标位置简单计算出来的线性表的顺序存储,若一个元素存储在对应数组中的下标位置为i,则它的前驱元素在对应数组中的下标位置为i-1,它的后继元素在对应数组中的下标位置为i+1。在链式存储结构中,存储结点不仅含有所存元素本身的信息,而且含有元素之间逻辑关系的信息。数据的链式存储结构可用链接表来表示。
常用数据结构
数组
在我们程序设计中,为了处理方便,会把一些具有相同类型的元素有序的放在一起.这些有序排列的数据元素的集合称为
数组
栈
栈是只能在一端插入或删除的特殊线性表,先入栈的数据在栈底,后入的数据在栈顶.需要读取数据的时候,最先获取到的是栈顶的数据.也就是先进后出,后进先出
队列
一种特殊的线性表,它只允许在表的前端进行删除,后端进行插入操作,队列是先进先出,后进后出原则.
链表
链表是一种物理存储单元上非连续的,非顺序的存储结构,它既可表示线性的,也可以表示非线性的,在这里(逻辑结构中)链表是通过其中的指针来链接次序的,它是由一系列结点(链表中的每一个元素称为结点)组成的,结点可以在运行时生成,当中包含两个重要数据,一个是存储结点内容的数据域,另一个是存储下一个结点地址的指针域.
树
包含n(n>0)个结点的有穷集合k,且在k中定义了一个关系N,N满足以下条件:
1. 有且只有一个k0结点,k0结点称为树的根(root)结点.
2. 除k0外,k中的每个结点有且只有一个前驱结点.
3. k中各结点,对关系N来说,可以有m个后续(m>=0)
图
图是由有穷集合V和边集合E组成的.为和树做区别,图中的结点称为顶点,边是顶点的有序偶对,若两个顶点中间存在一条边则表示这两个顶点为相邻关系
堆
在计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。
散列表
若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。
涉及名词说明:
线性表
线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。数据元素是一个抽象的符号,其具体含义在不同的情况下一般不同。
我们说“线性”和“非线性”,只在逻辑层次上讨论,而不考虑存储层次,所以双向链表和循环链表依旧是线性表。
在数据结构逻辑层次上细分,线性表可分为一般线性表和受限线性表。一般线性表也就是我们通常所说的“线性表”,可以自由的删除或添加结点。受限线性表主要包括栈和队列,受限表示对结点的操作受限制。
优点:
- 线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。
返回继续阅读
有序偶
在数学中,有序偶是两个对象的搜集,使得可以区分出其中一个是“第一个元素”而另一个是“第二个元素”(第一个元素和第二个元素也叫做左投影和右投影)。带有第一个元素a和第二个元素b的有序偶通常写为(a,b)。
返回继续阅读