
笔记
哲siegel
饮水思源,安之若素
展开
-
算法设计与分析(绪论)
绪论一、什么是算法?二、算法的描述方法自然语言优点:容易理解缺点:冗长、二义性使用方法:粗线条描述算法思想注意事项:避免写成自然流程图优点:流程直观缺点:缺少严密性、灵活性使用方法:描述简单算法注意事项:注意抽象层次程序设计语言优点:能由计算机执行缺点:抽象性差,对语言要求高使用方法:算法需要验证注意事项:将算法写成子函数伪代码——算法语言伪代码(Pseudocode):介于自然语言和程序设计语言之间的方法,它采用某一程序设计语言的基本语法,操作指令可以结合自然语原创 2020-05-28 22:37:27 · 746 阅读 · 0 评论 -
数据结构笔记(查找:二叉排序树)
采用二叉树这种数据结构,实现动态查找一、二叉排序树(Binary Search Tree)二叉排序树(也称二叉查找树):或者是一棵空的二叉树,或者是具有下列性质的二叉树:⑴若它的左子树不空,则左子树上所有结点的值均小于根结点的值;⑵若它的右子树不空,则右子树上所有结点的值均大于根结点的值;⑶ 它的左右子树也都是二叉排序树。void BiSortTree :: InOrder(BiNod...原创 2019-12-02 22:24:17 · 309 阅读 · 0 评论 -
数据结构笔记(查找:顺序查找、折半查找)
一、查找的基本概念1、列表:由同一类型的数据元素组成的集合。2、关键码:数据元素中的某个数据项,可以标识列表中的一个或一组数据元素。3、键值:关键码的值。4、主关键码:可以唯一地标识一个记录的关键码。5、次关键码:不能唯一地标识一个记录的关键码。6、查找 :在具有相同类型的记录构成的集合中找出满足给定条件的记录。7、查找的结果 :若在查找集合中找到了与给定值相匹配的记录,则称查找成功...原创 2019-12-02 21:53:02 · 1023 阅读 · 0 评论 -
数据结构笔记(图:最短路径、事件时间、关键路径、拓扑序列)
在非网图中,最短路径是指两顶点之间经历的边数最少的路径。在网图中,最短路径是指两顶点之间经历的边上权值之和最短的路径。Dijkstra算法基本思想:设置一个集合S存放已经找到最短路径的顶点,S的初始状态只包含源点v,对vi∈V-S,假设从源点v到vi的有向边为最短路径(从v到其余顶点的最短路径的初值)。以后每求得一条最短路径v, …, vk,就将vk加入集合S中,并将路径v, …, v...原创 2019-12-01 23:16:47 · 1814 阅读 · 0 评论 -
数据结构笔记(最小生成树)
一、最小生成树(MST)生成树的代价:设G=(V,E)是一个无向连通网,生成树上各边的权值之和称为该生成树的代价。最小生成树:在图G所有生成树中,代价最小的生成树称为最小生成树。性质:假设G=(V, E)是一个无向连通网,U是顶点集V的一个非空子集。若(u, v)是一条具有最小权值的边,其中u∈U,v∈V-U,则必存在一棵包含边(u, v)的最小生成树。构造最小代价生成树两种方法:Pr...原创 2019-11-24 17:27:14 · 845 阅读 · 0 评论 -
数据结构笔记(图:邻接表)
一、邻接表存储的基本思想:对于图的每个顶点vi,将所有邻接于vi的顶点链成一个单链表,称为顶点vi的边表(对于有向图则称为出边表)所有边表的头指针和存储顶点信息的一维数组构成了顶点表邻接表有两种结点结构:顶点表结点和边表结点vertex:数据域,存放顶点信息。firstedge:指针域,指向边表中第一个结点。adjvex:邻接点域,边的终点在顶点表中的下标。next:指针域,指向边...原创 2019-11-24 03:24:53 · 8743 阅读 · 0 评论 -
数据结构笔记(图:邻接矩阵)
一、图的存储结构及实现邻接矩阵(数组表示法)1、一个一维数组存储图中顶点的信息2、一个二维数组(邻接矩阵)存储途中个顶点之间的邻接关系基本问题:1、无向图邻接矩阵的特点:主对角线为0且一定是对称矩阵2、如何求顶点i的度:邻接矩阵的第i行(或第i列)非零元素的个数3、如何判断顶点 i 和 j 之间是否存在边:测试邻接矩阵中相应位置的元素arc[i][j]是否为14、有向图的邻接矩阵...原创 2019-11-23 17:12:45 · 2622 阅读 · 0 评论 -
数据结构笔记(线索二叉树)
一、线索二叉树二叉树的遍历运算是将二叉树中结点按一定规律线性化的过程。当以二叉链表作为存储结构时,只能找到结点的左、右孩子信息,而不能直接得到结点在遍历序列中的前驱和后继信息。要得到这些信息可采用以下两种方法:1、是将二叉树遍历一遍,在遍历过程中便可得到结点的前驱和后继,但这种动态访问浪费时间;2、是充分利用二叉链表中的空链域, 将遍历过程中结点的前驱、 后继信息保存下来。在有n个结点...原创 2019-11-23 15:57:40 · 539 阅读 · 0 评论 -
数据结构笔记(树、二叉树与森林 哈夫曼)
一、树和二叉树之间的对应关系(一)树:兄弟关系=二叉树:双亲和右孩子(二)树:双亲和长子=二叉树:双亲和左孩子树的前序遍历等价于二叉树的前序遍历树的后序遍历等价于二叉树的中序遍历二、森林、树、二叉树的转换(一)森林转换为二叉树1、 将森林中的每棵树转换成二叉树;2、从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树根结点的右孩子,当所有二叉树连起来后,此时所得到的二叉树...原创 2019-11-17 23:53:25 · 445 阅读 · 0 评论 -
数据结构笔记(关于二叉树的一些操作)
**一、树中节点的数目**左子树中节点的数目+右子树中节点的数目+1template<class T>int BiTree<T>::count(BiNode<T>* root){ int number=0; if (root==NULL) number=0; else number=count(root->lchild)+coun...原创 2019-11-17 23:27:16 · 284 阅读 · 0 评论 -
数据结构笔记(二叉树遍历、存储、链表1)
一、二叉树的遍历操作对于上图二叉树有以下几种遍历操作(一)前序(根)遍历若二叉树为空,则空操作返回;否则:①访问根结点;②前序遍历根结点的左子树;③前序遍历根结点的右子树。前序遍历序列:A B D G C E F(二)中序(根)遍历若二叉树为空,则空操作返回;否则:①中序遍历根结点的左子树;②访问根结点;③中序遍历根结点的右子树。中序遍历序列:D G B A E C F...原创 2019-11-14 17:41:44 · 234 阅读 · 0 评论 -
数据结构笔记(二叉树逻辑结构)
一、二叉树的定义二叉树是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。二、二叉树的特点:(一)每个结点最多有两棵子树;(二) 二叉树是有序的,其次序不能任意颠倒。三、特殊的二叉树(一)斜树1、所有结点都只有左子树的二叉树称为左斜树;2、所有结点都只有右子树的二叉树称为右斜树;3、左斜树...原创 2019-11-12 19:06:38 · 915 阅读 · 1 评论 -
数据结构笔记(多维数组)
一、几种特殊线性表(一)线性表——具有相同类型的数据元素的有限序列。(二)特殊线性表1、栈——仅在表尾进行插入和删除操作的线性表。2、队列——在一端进行插入操作,而另一端进行删除操作的线性表。3、串——零个或多个字符组成的有限序列(被限制元素的类型为字符) 。4、(多维)数组——线性表中的数据元素可以是线性表,但所有元素的类型相同。5、广义表——线性表中的数据元素可以是线性表,且元素...原创 2019-11-09 21:07:31 · 491 阅读 · 0 评论 -
数据结构笔记(队列)
一、队列的逻辑结构(一)队列:只允许在一端进行插入操作,而另一端进行删除操作的线性表。(二)空队列:不含任何数据元素的队列。 允许插入(也称入队、进队)的一端称为队尾,允许删除(也称出队)的一端称为队头。二、队列的顺序存储结构及实现(一)改进出队的时间性能放宽队列的所有元素必须存储在数组的前n个单元这一条件 ,只要求队列的元素存储在数组中连续的位置。1、设置队头、队尾两个指针(fron...原创 2019-11-08 23:13:58 · 278 阅读 · 0 评论 -
数据结构笔记(栈)
栈(一)定义:1、栈:限定仅在表尾进行插入和删除操作的线性表。2、空栈:不含任何数据元素的栈。3、栈顶与栈底:允许插入和删除的一端称为栈顶,另一端称为栈底。(二)顺序栈的实现——入栈template <class T>void seqStack<T>::Push ( T x){ if (top==MAX_SIZE-1) throw “溢出”...原创 2019-11-04 22:43:29 · 225 阅读 · 0 评论 -
数据结构笔记(线性表二)
一、循环链表(一)定义:将单链表或者双链表的头尾结点链接起来,就是一个循环链表。不增加额外存储花销,却给不少操作带来了方便。从循环表中任一结点出发,都能访问到表中其他结点。(二)特点:首尾相接的链表。可以从任一节点出发,访问链表中的所有节点。判断循环链表中尾结点的特点:q->next==firsttemplate <class T>struct Node{ ...原创 2019-11-04 22:22:44 · 203 阅读 · 0 评论