读《大话数据结构》摘抄定义

第一章 绪论
1.数据:数据其实就是符号,它可以输入到计算机,并且可以被计算机程序处理
2.数据结构:是相互之间存在一种或多种特定关系的数据元素的集合
3.逻辑结构(集合,线性,树形,图形)和物理结构(顺序储存,链式储存)
第二章 算法
1.算法:解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且一个指令表示一个或者多个操作
2.算法设计的要求:正确性 可读性 健壮性 时间效率高和储存量低
3.常见的时间复杂度:0(1)
第三章 线性表
1.线性表:零个或多个数据元素的有限序列
2.顺序储存方式:储存空间的起始位置data最大储存容量MaxSize当前长度length
3.线性表的顺序结构再存,取数据时时间复杂度为O(1),而插入或者删除时 时间复杂度为O(n);
4.线性表的顺序结构的优点:无需为表中的逻辑关系而增加额外的储存空间,可以快速的存取某一位置的数据
缺点:插入或者删除需要移动大量数据,当线性表长度变化较大时难以确定储存空间的大小 ,造成储存空间的”碎片”
5.链式储存结构:n个结点链成一个链表,每个结点只包含一个指针域,成为单链表
6.静态链表:数组描述的链表,
优点:在插入或者删除时只需要改游标,不需要移动元素,从而改进了在顺序储存结构中插入和删除需要移动大量元素的缺点.
缺点:没有解决连续储存带来的长度难以确定的问题,失去了顺序存储结构的随机存取的特性.
7.将单链表中终端结点的指针端由空指针指向首结点,就使得整个单链表成为一个环.这样的首尾相接的单链表就称为循环链表.
8.双向链表:在单链表的每个结点上,再设置一个指向其前驱结点的指针域.
第四章 栈与队列
1.栈: 限定仅在表尾进行插入和删除的线性表
2.递归函数:把一个直接调用自己或者通过一系列的调用语句间接地调用自己的函数
3.四则表达式 将中缀表达式转换为后缀表达式将后缀表达式进行运算得到结果
4.队列: 只允许在一端进行插入操作,而在另一端进行删除操作的线性表
第五章 串
1.串:→零个或者多个字符组成的有限序列,又名字符串
2.朴素匹配KMP模式匹配算法时间复杂度 O(n+m)
第六章 树 tree
1.树是由n个结点的有限集n=0时 称为空树, 在任何一棵非空树中:a.有且仅有一个特定的称为根的结点 b.当n>1时,其余结点可分为m个互不相交的有限集T1 T2 …Tm. 其中每个集合的本身又是一棵树,并且称为根的子树.
2.储存结构的设计是一个非常灵活的过程.一个储存结构设计的是否合理,取决于基于该储存结构的运算是否适合,是否方便,时间复杂度好不好等
3.双亲表示法 :每个结点中,附设一个指示器指示其双亲结点在数组的位置
4.孩子表示法:每个结点的孩子结点排列起来,以单链表作为储存结构,则n个结点有n个孩子链表,如果是叶子结点则此单链表为空. 然后n个头指针又组成一个线性表,采用顺序储存结构,存放进一个一维数组中
5.兄弟表示法:任意一棵树,他的结点的第一个孩子如果存在就是唯一的,他的右兄弟如果存在也是唯一的,因此,我们设置两个指针,分别指向该结点的第一个孩子和他的右兄弟,
6.二叉树:是n个结点的有限集合,该集合或者为空集,或者由一个根节点和两课互不相交的,分别称为根节点的左子树和右子树的二叉树组成;
7.二叉树的5种形态:空树,只有一个根节点,只有一个左子树,只有一个右子树,根节点有左子树和右子树;
8.斜树: 所有的结点都只有左子树的叫左斜树,所有结点都只有右子树的叫右斜树,统称为斜树
9.满二叉树:在一棵二叉树中,如果所有的分支结点都存在左子树和右子树,并且所有的叶子都在同一层上,这棵树称为二叉树;
10.完全二叉树:对一棵具有n个结点的二叉树按层序编号,如果编号为i的结点与同样深度的满二叉树中编号为i的结点在二叉树中位置完全相同,则这棵树为完全二叉树
11.二叉树的性质:a. 在二叉树的第i层上至多有2^(i-1) 个结点(i>=1); b.深度为k的二叉树至多有2^k -1 个结点(k>=1); c.对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2 则n0=n2+1;
d.具有n个结点的完全二叉树的深度为[log2n]+1 ; e.如果对一棵有n个结点的完全二叉树的结点按层序编号,对任一结点i有: 1.如果i=1.则结点i是二叉树的根,无双亲,i>2,则其双亲是结点i/2; 2.如
果 2i>n,则结点i无孩子,否则其左孩子是结点2i,3.如果2i+1>n,则结点i无右孩子,否则其右孩子是结点2i+1;
12.二叉树遍历:从根节点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次; 前序遍历中序遍历后序遍历 层序遍历
13.树转二叉树: 1加线 2去线, 3层次调整,
14.森林转二叉树: 1 把每个树转换为二叉树,2. 第一棵二叉树不动,从第二棵开始,依次吧后一棵二叉树的根结点作为前一棵二叉树的根结点的右孩子,用线连起.
第七章图
1.图: 由顶点的有穷非空集合和顶点之间边的集合组成,通常标书为 G(V,E),其中 G 表示一个图,V是图G中顶点的集合,E是图G中边的集合
2.图按照有无方向分为无向图和有向图, 无向图由顶点和边构成,有向图由顶点和弧构成, 弧有弧头和弧尾之分;
3.图按照边或弧的多少分稀疏图和稠密图; 图中顶点之间有邻接点.依附的概念; 无向图顶点的边数叫度,有向图的顶点分出度和入度;
4.图的边或弧带着权的叫做网;
5.无向图中连通且n个顶点n-1个边叫生成树.有向图中一顶点入度为0 其余顶点入度为1的叫有向树,一个有向图由若干棵有向树构成生成森林
6.图的邻接矩阵储存方式是用两个数组来表示图.一个一维数组储存图中顶点信息,一个二维数组存储图中边或弧的信息
7.图的其他储存方式: 邻接表储存方法是数组与链表的结合逆邻接表. 十字链表邻接多重表 边集数组
8.图的遍历分 广度和深度优先
9.最小生成树 :把构造连通网的最小代价生成树普利姆(prim)算法克鲁斯凯尔(Kruskal)算法
10.最短路径:是指两顶点之间经过的边上权值之和最少得路径,并且我们称第一个顶点为源点 最后一个顶点是终点; 迪杰斯特拉算法弗洛伊德算法
11.AOV网: 在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网 称为AOV网
12.拓扑序列:设G=(V,E)是一个具有n个顶点的有向图,V中的顶点序列V1,v2…vn,满足若从顶点vi到vj有一条路径,则在顶点序列中顶点vi必在顶点vj之前.
13.AOE网:在一个表示工程的带权有向图中,用顶点表示时间,用有向边表示活动,用边上的权值表示活动的持续时间,这种有向图的边表示活动的网,称为AOE网
14.关键路径:路径上各个活动所持续的时间之和称为路径的长度,从源点到汇点具有最大长度的路径叫做关键路径,在关键路径上的活动叫做关键活动
第八章查找
1.查找:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素
2.静态查找表是只做查找操作的查找表; 动态查找表示在查找的过程中同时插入不存在的元素或者删除已存在的某个元素
3.顺序查找表:又称线性查找,从表的第一个元素开始,逐个进行记录的关键字和给定值的比较,若相等,则查找成功,若直到最后一个都不相等的话,则查找失败; O(n)
4.有序表查找:折半查找,O(logn) 插值查找公式:(key-a[low])/(a[high]-a[low])O(logn)斐波那契查找 O(logn)
5.线性索引查找:索引就是把一个关键字与它对应的记录相关联的过程稠密索引:指在线性索引中,将数据集中的每一个记录对应一个索引项; 分块索引: 是吧数据集的记录分成了若干块,块内无序,块间有序 倒排索引:其中记录号表储存具有相同关键字的所有记录的记录号
6.二叉排序树 : 又称二叉查找树 它或者是空树或者有以下性质:若它的左子树不空,则左子树上所有结点的值均小于它的根结构的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值 它的左右子树也分别是二叉排序树
7.平衡二叉树是一种二叉排序树,其中每个结点的左子树和右子树的高度差至多等于1 ; 将二叉树上结点的左子树深度减去右子树的深度的值称为平衡因子BF; 距离插入结点最近的 且平衡因子的绝对值大于1的结点为根的子树,我们称为最小不平衡子树
8.多路查找树 每一个结点的孩子数可以多于两个,且每一个结点处可以存储多个元素 2-3树2-3-4树b树b+树
9.散列表(哈希表)是在记录的储存位置和他的关键字之间建立一个确立的对应关系f,使得每个关键字key可以对应一个储存位置f ,这种对应关系f称为散列函数或哈希函数,
第九章 排序
1.排序:假设含有n个记录的序列为[r1,r2,r3……rn],其对应的关键字分别为[k1,k2,….kn],需确定1,2,….,n 的一种排列p1,p2….pn,使其响应的关键字满足kp1<=kp2<=…<=kpn关系,即使得序列称为一个按关键字有序的序列[rp1,rp2,…rpn],这种操作叫做排序;
【读《大话数据结构》摘抄定义】2.内排序是在排序过程中,待排序的所有记录全部被放置在内存中,外排序是由于排序的记录个数太多,不能同时放置在内存,整个排序的过程需要在内外存之间多次交换数据才能进行
3.排序的性能时间性能,辅助空间,算法的复杂性
4.冒泡排序: 两两比较相邻的记录的关键字,如果返序则交换,直到没有返序的记录为止
5.简单选择排序:通过n-i次关键字间的比较,从n-i+1个记录中选择关键字最小的记录,并和第i个记录交换
6.直接插入排序:将一个记录插入到已经排好序的有序表中,从而得到一个新的.记录数增1的有序表;
7.希尔排序:把原来大量记录进行分组,然后这些子序列进行插入排序当整个序列基本有序时,再对全体记录进行一次插入排序
8.堆:具有下列性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆; 或者每个结点的值都小于或等于其孩子结点的值,称为小顶堆;
9.堆排序: 将待排序的序列构造成一个大顶堆.此时,整个序列的最大值就是锥顶的根结点.将它移走,然后将剩余的n-1个序列重新构造一个堆,这样就会得到n个元素中的次大值,反复执行,得到有序序列;
10.归并排序:假设初始序列有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两合并,得到[n/2]个长度为2或1的有序子序列,再两两合并,如此重复,知道得到一个长度为n的有序序列
11.快速排序:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录进行排序,以达到整个序列的有序
12.
读《大话数据结构》摘抄定义
文章图片
13.
读《大话数据结构》摘抄定义
文章图片

    推荐阅读