1.数据:一切能够由计算机接受和处理的对象。
2.数据元素:是数据的基本单位,在程序中作为一个整体加以考虑和处理。
3.数据项:数据项是不可分割的最小单位。
4.数据对象:具有相同性质的数据元素的集合。
5.数据类型:是一个值的集合和定义在此集合上一组操作的总称。
6.抽象数据类型(ADT):一个数据模型和定义在模型上的一组操作。
7.数据结构:数据之间存在一种和多种特定逻辑关系,这些数据元素所构成的逻辑结构称为数据结构。
8.逻辑结构:数据结构逻辑关系的描述,没有考虑到计算机中的具体实现。
9.存储结构(物理结构):是指逻辑结构在计算机中的存储映像,是逻辑结构在计算机中的实现,包括数据的表示和关系的表示。
10.顺序存储结构:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。
11.链式存储结构:借助指示元素存储地址的指针表示数据元素之间的逻辑关系。
12.算法:解决某一特定问题的集体步骤的描述,是指令的有限、有序序列。
13.时间复杂度:算法中基本操作重复执行的次数的阶数,T(n)=O(f(n)),通常指最坏情况下时间复杂度。
14.空间复杂度:为算法所需的存储空间的度量,记作S(n)=O(f(n))。
15.线性表:具有相同数据类型的n(n>=0)个数据元素的的有限序列,其中n为表长,n=0时线性表为空表。
16.单链表:线性表的链式存储又称单链表,是指通过一组任意的存储单元来存储线性表中的数据元素。
17.双链表:为了克服单链表优化访问前驱节点而增加一个指针的线性表的链式存储。
18.循环单链表:最后一个节点的指针不是NULL,而是指向头节点的特殊单链表,从而使整个链表形成一个环。
19.循环双链表:与循环单链表相比,头节点的prior指针还要指向表尾结点的链表。
20.静态链表: 用数组描述线性表的链式存储结构。
21.栈:一个操作受限的线性表,只允许在一端进行插入和删除操作的线性表(后进后出)。
22.队列:一个操作受限的线性表,只允许在表的一端插入在另一端删除,入队和出队(先进先出)。
23.循环队列:将顺序队列臆造成一个环状的空间,即把存储队列元素的表从逻辑上视为一个环,称为循环队列。
24.稀疏矩阵:非零元较零元少,且分布没有一定规律的矩阵。
25.串 :由零个或多个字符组成的有限序列。
26.广义表:一种特殊的线性表,表中的数据元素可以是原子,也可以是子表,记作L=(a1,a2,…,an)
27.树:由n(n>=0)个节点组成的有限集合,若n=0称为空树。
28.结点:树的结点包含一个数据元素及若干指向其子树的分支。
29.度:一个结点包含子树的数目。称为该结点的度。一棵树各结点的度的最大值,称为该树的度。
30.叶子结点:度为0的结点,称为叶子结点或者树叶,也叫终端结点。
31.孩子结点:若结点X有子树,则子树的根结点为X的孩子结点,也称为孩子,儿子,子女等。
32.双亲结点:若结点X有子女Y,则X为Y的双亲结点。
33.祖先结点:从根结点到改结点所经过分支上的所有结点为该结点的祖先。
34.子孙结点:某一结点的子女及子女的子女都为该结点子孙。
35.兄弟结点:具有同一个双亲的结点,称为兄弟结点。
36.分支结点:除叶子结点外的所有结点,为分支结点,也叫非终端结点,(度不为0的结点)
37.层数(层次):根结点的层数为1,其他结点的层数为从根结点到该结点所经过的分支数目再加1。
38.树的高度(深度):树中结点所处的最大层数称为树的高度,如空树的高度为0,只有一个根结点的树高度为1.
39.结点的层次,深度:从根结点开始自顶向下逐渐累加;高度是从叶子结点自底向上累加;树的高度(深度)是树中结点最大的层数。
40.有序树:若一棵树中所有子树从左到右的排序是有顺序的,不能颠倒次序,称该树为有序树。
41.无序树:若一棵树中所有子树的次序无关紧要,则称无序树。
42.森林(树林):若干互不相交的树组成的集合为森林。一棵树可以看成是一个特殊的森林。
43.堂兄弟结点;在树中。双亲在同一层的那些结点,互称为堂兄弟结点。
44.路径和路径长度:路径长度所经过边的个数。
45.二叉树:是n(n>=0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵不相交的左子树和右子树组成。(不存在度大于2的结点,左右顺序不能颠倒)
46.满二叉树:深度为k具有2k-1个结点的二叉树,称为满二叉树。
47.完全二叉树:如果一棵具有n个结点的深度为k的二叉树。
48.二叉排序树:左子树上所有结点结点关键字小于根结点,右子树所有关键字大于根结点,左子树和右子树又是一个二叉排序树。
49.平衡二叉树:树上任意节点的左子树和右子树深度之差不超过1.
50.平衡因子:将平衡二叉树上结点的左子树深度减去右子树深度的值称为平衡因子。
51.二叉树的遍历:是指按一定规律访问二叉树的每个结点,且每个结点只被访问一次的过程。
52.线索二叉树:对一个二叉树中的所有结点的空指针域按照某种遍历次序加线索的过程叫做线索化,被线索化的二叉树称为线索二叉树。
53.哈夫曼树:又称最优二叉树,是一类带权路径长度最短的树,设有n个权值{w1,w21,…,wp},在这些权值为各个叶子结点的权构成的二叉树中,带权路径长度w怕,最小的二叉树叫做哈夫曼树。
54.哈夫曼编码:在哈夫曼树中,约定左分支代表0,右分支代表1,把叶子结点到根结点的路径上的左右分支代表的码从下至上一次连接起来,组成的字符串称为该叶子结点的哈夫曼编码,这就是哈夫曼编码。
55.图:图G由两个集合V和E组成,记为G=(V,E),其中V是顶点的有穷非空集合,E是由V中顶点序偶组成的有穷集,这些序偶称为边或弧。
56.图的顶点的度:以该顶点为一个端点的边的数目。
57.简单图:不存在重复边,不存在顶点到自身的边。
58.无向完全图:无向图中任意两个顶点之间都存在边称为无向完全图。
59.有向完全图:在有向图中,任意两个顶点之间都存在方向互为相反的两条弧。含有n个顶点的有向完全图有n*(n-1)条边。
60.子图:设有两个图G=(V,E)和G’=(V’,E’),若V(G’)是V(G)的子集,且E(G’)是E(G)的子集,则称G’是G的子图。
61.连通:无向图中,顶点到v到w有路径存在,则v和w是连通的。
62.连通图:任意两个顶点之间都存在路径则是连通图。
63.连通分量:无向图中极大连通子图称为连通分量。
64.非连通图:若有n个顶点,并且小于n-1条边,则必为非连通图。
65.强连通图:在有向图中,任意两个顶点之间都有来回路径相通。
66.非强连通图的每一一个极大强连通子图叫做强连通分量。
67.简单路径:若一条路径上各顶点均不重复,即路径经过每一顶点不超过一次则此路径叫做简单路径。
68.环路:如果从一个顶点出发又回到该顶点,即Vp与Vg相同,则此路径叫做环路。
69.简单回路:序列中只有第一个顶点和最后一个顶点相同的路径。
70.生成树:连通图生成树是包含全部顶点的一个极小连通子图,顶点为n个生成树有 n-1条边(包含无向图G所有顶点的极小连通子图,成为生成树)。
71.极小连通子图:该子图是G的连通子图,在该子图中删除任何一条边,子图都不存在连通。
72.有向树:一个顶点入度为0,其余入度全为1,则称此有向图为有向树
73.图的遍历:按照某种次序访问图中的每一个顶点且一次。
74.广度优先搜索:首先出顶点v出发,访问v中各个未被访问的邻接结点,然后再依次访问邻接结点的未被访问过的邻接结点;是一种分层查找方式,每向前走一步,访问一批结点,不是递归;为了实现逐层访问,必须借助一个辅助队列;图的广度优先搜索与二叉树的层序遍历完全一致。
75.深度优先遍历:类似于树的先序遍历,尽量进行深层遍历:从一个顶点出发,挨个访问其邻边未被访问过的顶点,一直访问到不能继续进行的时候退回到原来的顶点,退回路中挨个查找其邻边未被访问过的顶点,并访问之,一直退回到原点。
76.最小生成树:从图中选取若干条边,将所有顶点连接起来,并且所选取的这些边的权值之和最小。
77.普里姆(Prim)算法:算法从一个顶点开始,在此顶点对应的结点中寻找最小权值的结点连接,如此往复,直至满了为止,此时树必有n-1条边
78.最短路径:对于带权图,路径上权值之和最小的叫简单路径
79.拓扑排序:就是将AOV网络中的各个顶点(各个活动)排列成一个线性有序序列,使得所有要求的前趋、后继关系都能得到满足。
80.AOV网:用顶点表示事件,用弧表示活动,弧的权值表示活动所需的时间,构造的有向网称为 AOE 网。
81.有向无环图:有向图中不存在环,称为DAG图。
82.源点:存在唯一的入度为0的顶点,叫源点汇点:存在唯一的,出度为0的顶点叫汇点。
83.关键路径:从源点到汇点的最长路径的长度,即为完成整个工程任务所需的时间,该路径称为关键路径。
84.关键活动:关键路径上的活动叫做关键活动。
85.查找:指定某个值,在查找表中确定是否存在一个记录,该记录的关键字等于给定值。
86.平均查找长度ASL-查找方法时效的度量:为确定记录在查找表中的位置需和给定值进行比较的关键字个数的期望值。
87.顺序查找:主要用于线性表中查找,分为无序线性表和有序线性表查找。
88.冲突:两个不同的关键字,其散列函数值相同,因而被映射到同一表位置的现象称为冲突。
89.折半查找:又叫二分查找,仅适用于按关键字排列有序的顺序表。
90.索引顺序表查找:将查找表分为若干个子表,块内可以无序,块间有序,即第一个块关键字小于第二个块中所有记录的关键字,依次类推,再建立一个索引表,索引表中每个元素含有各块最大关键字和各块的第一个元素的地址,索引表按关键字有序排列。
91.关键字:记录(数据元素)中的某个数据项的值。
92.主关键字:该关键字可以唯一地标识一个记录。
93.次关键字:该关键字不能唯一标识一个记录,
94.静态查找表:对查找表的查找仅是以查询为目的,不改动查找表中的数据。
95.动态查找表:在查找的过程中同时插入不存在的记录,或删除某个已存在的记录。
96.排序:将数据表调整为按关键字从小到大或从大到小的次序排列的过程。
97.直接插入排序:是最简单的排序方法,它的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录增1的有序表。
98.稳定排序:在排序过程中,如果关键字相同的两个元素的相对次序不变,则称为稳定的排序。
99.折半插入排序:也叫二分插入排序,先折半查找出元素的待插入位置,然后再统一移动待插入位置之后的所有元素。
100.希尔排序:先将待排序表分为若干个相同长度的子表(最后一个可不计),分别进行直接插入排序,当基本有序时,再对整体做一次直接插入排序。
101.交换排序:根据序列中两元素关键字比较结果对换两元素。
102.冒泡排序:从后往前两两比较相邻元素值,若为逆序则交换它们,结果将最小的元素排到第一个位置,每趟排序将需要排序的最小(或最大)的元素放到序列的最终位置。
103.快速排序:通常取第一个pivot 元素作为基准,通过一趟排序将其分为106.两部分 L[1…k-1]与 L[k+1..n]其中 L[1…k-1]中元素都小于等于 pivot,而L[k+1..n]中元素都大于等于 pivot,则 pivot放在其最终位置k上,而后分别递归对两个子表重复上述过程,直至每部分只有一个元素或为空;具体实现为:将表从后往前扫与基准元素对比,比其小的第一个元素相互对换,而后从前往后扫,比其大的第一个元素与其相互对换,依次重复直到完全定位。
104.选择排序:每一趟在n-i+1(i=1,2,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。
105.简单选择排序:第i趟从 L[i..n]中选取最小元素与工对换,每一趟排序108.可以确定一个元素的最终位置
106.堆:它是一种树形组织,使我们能迅速确定包含最大值(或最小值)的结点。
107.堆排序:把待排序的记录的关键字存放在数组A[1..n]之中,将A看成是一棵完全二叉树的顺序表示,每个结点表示一个记录,第一个记录 A[1]作为二叉树的根,以下各记录 A[2…n]依次逐层从左到右顺序排列,任意结点 A[i]的左孩子是 A[2i],右孩子是 A[2i+1],双亲是 A[ i/2 ]。
108.归并排序:将表看做n个有序的子表,每个子表长度为1,然后两两合并,称为2-路 归并排序。
109.基数排序:基于关键字各位大小进行排序,并非基于比较。