数据结构术语
严蔚敏《数据结构(C语言版)》
1.真题中出现过的
1、堆分配存储关系:串的存储方式可大致分为三种:定长顺序存储方式、动态分配的堆分配存储方式以及链式存储方式。所谓堆,即为一块内存。当程序运行时,系统自动为程序分配一块内存,这块内存是空的。每当使用malloc或new函数的时候,新声明的变量就都会被存入这片内存中。使用完毕后,若不及时free或delete之前声明的变量,堆中刚占用的内存就不会释放,即为内存泄露问题。总而言之,串的堆存储就是根据需要动态分配字符串的存储空间。
2、完全图(2):对于无向图来说,任意两点之间有一条无向边的图叫无向完全图,若它有n个顶点,则有n*(n-1)/2条边;对于有向图来说,任意两点之间有方向相反的两条边叫有向完全图,若它有n个顶点,则有n*(n-1)条边。
3、树的结点层次(2):根的层次为1,根的直接左右孩子层次为2,以此类推层次逐渐递增。
4、拓扑排序(2):对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。
5、时间复杂度(2): 算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))
6、队列(2):队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
7、森林:由m(m>=0)棵互不相交的树的集合称为森林。
8、线性表的链式存储结构:为了表示每个数据元素与其直接后继元素之间的逻辑关系,每个元素除了存储本身的信息外,还需要存储指示其直接后继的信息。n个结点链接成一个链式线性表的结构叫做链表,当每个结点中只包含一个指针域时,叫做单链表。
9、图的遍历:图的遍历是指从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。
10、哈希函数的同义词:选取某个函数,依该函数按关键字计算元素的存储位置,并按此存放;查找时,由同一个函数对给定的值计算地址,将给定的值与地址单元中元素关键字进行比较,确定是否查找成功,即哈希方法。 哈希方法中使用的转换函数即为哈希函数。按照这个思想构造的表叫做哈希表。 通常关键字的集合比哈希地址集合大得多,所以经过哈希函数变换后,可能将不同的关键字映射到同一个哈希地址上,这种现象称为冲突。映射到同一哈希地址上的关键字称为同义词。
11、二叉查找/排序树(3):二叉查找树(Binary Search Tree),又被称为二叉搜索树。设x为二叉查找树中的一个结点,x节点包含关键字key,节点x的key值记为key[x]。如果y是x的左子树中的一个结点,则key[y] <= key[x];如果y是x的右子树的一个结点,则key[y] >= key[x]。在二叉查找树中:
(01) 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(02) 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(03) 任意节点的左、右子树也分别为二叉查找树。
(04) 没有键值相等的节点(no duplicate nodes)
12、(图的)广度优先搜索:广度优先遍历图是以顶点v为起始点,由近至远,依次访问和v有路径相通而且路径长度为1,2,……的顶点。为了使“先被访问顶点的邻接点”先于“后被访问顶点的邻接点”被访问,需设置队列存储访问的顶点。
13、(二叉树结点的)平衡因子:某结点的左子树与右子树的高度(深度)差即为该结点的平衡因子(BF,Balance Factor)。
14、**有向完全图复杂度 :
15、数据结构的四种基本逻辑结构((数据结构的)结构类型)(2):指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。逻辑结构包括:(1)集合结构:数据结构中的元素之间除了"同属一个集合" 的相互关系外,别无其他关系;(2)线性结构:数据结构中的元素存在一对一的相互关系;(3)树形结构:数据结构中的元素存在一对多的相互关系;(4)图形结构:数据结构中的元素存在多对多的相互关系。
16、算法及其特性(2):算法是堆特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作;此外,一个算法还具有下列5个重要的特性:(1)有穷性:指算法必须能在执行有限个步骤之后终止(2)确定性:算法的每一步骤必须有确切的定义,读者理解时不会产生二义性,相同的输入只能有相同的输出;(3)可行性:算法中执行的任何计算步都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成;(也称之为有效性)(4)输入:一个算法有0个或多个输入,这些输入取自于某个特定的对象的集合(5)输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的。
17、双向链表: 是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。
18、无序树:树中任意节点的子结点之间没有顺序关系,这种树称为无序树,也称为自由树
19、关键路径(2):从一个源点(入度为0的顶点)到一个汇点(出度为0的顶点)具有最大长度的路径被称为关键路径。
20、(哈希函数)冲突:通常关键字的集合比哈希地址集合大得多,所以经过哈希函数变换后,可能将不同的关键字映射到同一个哈希地