数据结构
Posted zs-notes
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构相关的知识,希望对你有一定的参考价值。
1.定义:数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中元素之间的关系组成。记为:
DataStructure=(D,R)
其中,D是数据元素的集合,R是该集合中所有元素之间的关系的有限集合。
2.研究对象
2.1 数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指元素之间的前后间关系,而与它们在计算机中的存储位置无关。逻辑结构包括:
2.1.1 集合
数据结构中的元素之间除了“同属一个集合”的相互关系外,别无其他关系;
2.1.2 线性结构
数据结构中的元素存在一对一的相互关系;
2.1.3 树形结构
数据结构中的元素存在一对多的相互关系;
2.1.4 图形结构
数据结构中的元素存在多对多的相互关系。
2.2 数据的物理结构:指数据的逻辑结构在计算机存储空间的存放形式。
数据的物理结构是数据结构在计算机中的表示(又称映像)。具体实现的方法有顺序、链接、索引、散列等多种,所以,一种数据结构可表示成一种或多种存储结构。
3.常用结构
3.1 数组
在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。
3.2 栈
是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
3.3 队列
一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作发端称为队尾,进行删除操作的端称为对头。队列是按照“先进先出”或“后进后出”的原则组织数据的。队列中没有元素时,称为空队列。
3.4 链表
是一种物理存储单元上非连续、非顺序的存储结构,它既可以表示线性结构,也可以用于表示非线性结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
3.5 树
是包含n(n>0)个结点的有穷集合K,且在K中定义了一个关系N,N满足 以下条件:
3.6 图
图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。
3.7 堆
在计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。
3.8 散列表
若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。
以上是关于数据结构的主要内容,如果未能解决你的问题,请参考以下文章