数据结构——名词解释

417 阅读10分钟
  1. 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
  2. 数据元素:是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。
  3. 数据项:一个数据元素可以由若干个数据项组成,数据项是数据不可分割的最小单位。
  4. 数据对象:是性质相同的数据元素的集合,是数据的子集。
  5. 数据结构:是相互之间存在一种或者多种特定关系的数据元素的集合。
  6. 逻辑结构:是指数据对象中数据元素之间的相互关系。
  • 集合结构:集合结构中的数据元素除了同属于一个集合外,他们之间没有其他的关系。
  • 线性结构:线性结构中数据元素之间是一对的关系。
  • 树形结构:数据元素之间存在一种一对多的层次关系。
  • 图形结构:数据元素之间存在多对多的关系。
  1. 物理结构:是指数据的逻辑结构在计算机中的存储形式。
  • 顺序存储:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。
  • 链式存储:是把数据元素存储在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。不能反映逻辑关系,所以用地址。
  1. 抽象数据类型:是指一个数学模型及定义在该模型上的一组操作。

数据项 -->数据元素 -->数据对象 --> 数据包含关系

  1. 算法:解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
  2. 线性表:零个或多个数据元素的有限序列。
  3. 前驱,后继元素:a1,a2,a3,a4...,an
  4. 空表:线性表元素的个数n(n>=0)为线性表的长度,当n=0时,称为空表。
  5. 结点:为了表示每个数据元素ai与其直接后继元素ai+1之间的逻辑关系,数据ai除了存储本身的信息外,还需要存储指示其直接后继的信息,我们把存储数据元素信息的域称为数据域,存储后继结点的位置的域称为指针域,这两部分信息组成数据元素ai的存储映像,称为结点。

结点是由存放数据元素的数据域以及存放其后继结点地址的指针域组成。

  1. 单链表:n个结点链接成一个链表,链表中的每个结点中只包含一个指针域,则称为单链表。
  2. 头指针:链表中第一个结点的存储位置叫做头指针。
  3. 头结点:为了方便对链表操作,会在单链表的第一个结点前附设一个结点,这个结点称为头结点。
  4. 静态链表:用数组描述的链表称为静态链表。
  5. 循环链表:将单链表中终端结点的指针端由空指针改为指向头结点,使得整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表。
  6. 双向链表:是在单链表的每个结点中,再设置一个指向其前驱结点的指针域。
顺序存储 --> 线性表
链式存储 --> 单链表,静态链表,循环链表,双向链表。
  1. 栈:限定仅在表尾进行插入和删除操作的线性表。
  2. 队列:只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 先进先出
  3. 循环队列:队列的头尾相接的顺序存储结构称为循环队列。
  4. 串:由零个或者多个字符组成的有限序列,又称字符串。
  5. 空串:零个字符的串。
  6. 树:是n个结点的有限集,n=0时,称为空树。
  • 在任意一个非空树中:
  • (1)有且仅有一个特定的称为根的结点
  • (2)当n>1时,其余结点可分为m个(m>0)个互不相交的有限集。其中每一个集合本身是一棵树,并且称为根的子树。
  1. 二叉树:是n个结点的有限集合(n>=0),或者由一个根结点和两颗互不相交的、分别称为根结点的左子树和右子树的二叉树组成。
  2. 左斜树:所有结点都只有左子树的二叉树。
  3. 右斜树:所有结点都只有右子树的二叉树。
  4. 斜树:左右斜树统称斜树。
  5. 满二叉树:在一棵二叉树中,所有分支结点都存在左子树和右子树,并且所有叶子结点都在同一层上。
  6. 完全二叉树:对一颗具有N个结点的二叉树按层序编号,如果编号为i的结点与同样深度的满二叉树中编号为i的结点在二叉树的位置完全相同,则称为完全二叉树。
  7. 结点的度:结点拥有的子树数。
  8. 叶结点(终端结点):度为0的结点,其余结点为分支结点,也称内部结点
  9. 树的度:是树内各结点的度的最大值。
  10. 树的深度/高度:树中结点的最大层次。
  11. 有序树:如果将树中结点的各子树看成从左至右是有次序的,不能互换的,则称该树为有序树,否则为无序树。
  12. 线索二叉树
  13. 森林:m颗互不相交的树的集合。(m>=0)
  14. 路径长度:从树中的一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数称为路径长度。
  15. 树的路径长度:是从树的根到每一结点的路径长度之和。
  16. 赫夫曼树:带权路径长度WPL最小的二叉树。
  17. 最小生成树:构造连通网的最小代价生成树。
  18. 最短路径
  19. 拓扑排序
  20. 关键路径
  21. 顺序表查找:又称线性查找。是最基本的查找技术,从表中第一个或者最后一条记录开始,逐个进行记录的关键字和给定值比较,若某个记录的关键字和给定值相等,则查找成功,找到所查的记录;如果直到最后一个或第一个记录,其关键词和给定值比较都不想等时,则表中没有所查的记录,查找不成功。
  22. 折半查找:二分查找,前提条件是线性表中记录必须是关键码有序,线性表必须采用顺序存储;思想:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找;不断重复上述过程,直到查找成功或者所有查找区域无记录,查找失败为止。 公式如下:
low+12(highlow)low+\frac{1}{2}(high-low)
  1. 插值查找:是根据要查找的关键字key与查找表中最大最小记录的关键字比较后的查找方法,其核心在于插值的计算公式:
keya[low]a[high]a[low]\frac{key - a[low]}{a[high]-a[low]}
  1. 斐波那契查找:
  2. 线性索引查找
  3. 二叉排序树:又称二叉查找树,是一颗空树,或者具备以下性质的二叉树:
  • 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  • 若它的右子树不空,则右子树上的所有结点的值均大于根结点的值;
  • 它的左右子树也分别为二叉排序树
  1. 平衡二叉树:AVL树,是一种二叉排序树,其中每个结点的左子树和右子树的高度差至多等于1。
  2. 平衡因子:将二叉树上结点的左子树深度减去右子树深度的值称为平衡因子BF。
  3. 多路查找树:每个结点的孩子数可以多于两个,且每一个结点处可以存储多个元素。
  4. 2-3树:每个结点都具有两个孩子(2结点)或者三个孩子(3结点),一个2结点包含一个元素和两个孩子(或没有孩子),一个3结点包含一大一小两个元素和三个孩子(或没有孩子)
  5. B树:是一种平衡的多路查找树。
  6. B+树:
  7. 散列表查找
  8. 冒泡排序:是一种交换排序,基本思想是两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。
  9. 简单选择排序:通过n-i次 关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换。
  10. 直接插入排序:是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。
  11. 希尔排序:是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。
  12. 堆排序:将待排序的序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根结点,将他移走,然后将剩余的n-1个序列重新构造成一个堆,这样就会得到n个元素中的次小值,往复循环执行,便能得到一个有序序列。
  13. 归并排序:是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
  14. 快速排序:通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。
  • 快速排序算法通过多次比较和交换来实现排序,其排序流程如下:
  • (1)首先设定一个分界值,通过该分界值将数组分成左右两部分。
  • (2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于分界值,而右边部分中各元素都大于或等于分界值。 
  • (3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。 
  • (4)重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。