数据结构
哲siegel
饮水思源,安之若素
展开
-
数据结构笔记(查找:二叉排序树)
采用二叉树这种数据结构,实现动态查找一、二叉排序树(Binary Search Tree)二叉排序树(也称二叉查找树):或者是一棵空的二叉树,或者是具有下列性质的二叉树:⑴若它的左子树不空,则左子树上所有结点的值均小于根结点的值;⑵若它的右子树不空,则右子树上所有结点的值均大于根结点的值;⑶ 它的左右子树也都是二叉排序树。void BiSortTree :: InOrder(BiNod...原创 2019-12-02 22:24:17 · 264 阅读 · 0 评论 -
数据结构笔记(查找:顺序查找、折半查找)
一、查找的基本概念1、列表:由同一类型的数据元素组成的集合。2、关键码:数据元素中的某个数据项,可以标识列表中的一个或一组数据元素。3、键值:关键码的值。4、主关键码:可以唯一地标识一个记录的关键码。5、次关键码:不能唯一地标识一个记录的关键码。6、查找 :在具有相同类型的记录构成的集合中找出满足给定条件的记录。7、查找的结果 :若在查找集合中找到了与给定值相匹配的记录,则称查找成功...原创 2019-12-02 21:53:02 · 982 阅读 · 0 评论 -
数据结构笔记(图:最短路径、事件时间、关键路径、拓扑序列)
在非网图中,最短路径是指两顶点之间经历的边数最少的路径。在网图中,最短路径是指两顶点之间经历的边上权值之和最短的路径。Dijkstra算法基本思想:设置一个集合S存放已经找到最短路径的顶点,S的初始状态只包含源点v,对vi∈V-S,假设从源点v到vi的有向边为最短路径(从v到其余顶点的最短路径的初值)。以后每求得一条最短路径v, …, vk,就将vk加入集合S中,并将路径v, …, v...原创 2019-12-01 23:16:47 · 1698 阅读 · 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 · 785 阅读 · 0 评论 -
数据结构笔记(图:邻接表)
一、邻接表存储的基本思想:对于图的每个顶点vi,将所有邻接于vi的顶点链成一个单链表,称为顶点vi的边表(对于有向图则称为出边表)所有边表的头指针和存储顶点信息的一维数组构成了顶点表邻接表有两种结点结构:顶点表结点和边表结点vertex:数据域,存放顶点信息。firstedge:指针域,指向边表中第一个结点。adjvex:邻接点域,边的终点在顶点表中的下标。next:指针域,指向边...原创 2019-11-24 03:24:53 · 6950 阅读 · 0 评论 -
数据结构笔记(图:邻接矩阵)
一、图的存储结构及实现邻接矩阵(数组表示法)1、一个一维数组存储图中顶点的信息2、一个二维数组(邻接矩阵)存储途中个顶点之间的邻接关系基本问题:1、无向图邻接矩阵的特点:主对角线为0且一定是对称矩阵2、如何求顶点i的度:邻接矩阵的第i行(或第i列)非零元素的个数3、如何判断顶点 i 和 j 之间是否存在边:测试邻接矩阵中相应位置的元素arc[i][j]是否为14、有向图的邻接矩阵...原创 2019-11-23 17:12:45 · 2512 阅读 · 0 评论 -
数据结构笔记(线索二叉树)
一、线索二叉树二叉树的遍历运算是将二叉树中结点按一定规律线性化的过程。当以二叉链表作为存储结构时,只能找到结点的左、右孩子信息,而不能直接得到结点在遍历序列中的前驱和后继信息。要得到这些信息可采用以下两种方法:1、是将二叉树遍历一遍,在遍历过程中便可得到结点的前驱和后继,但这种动态访问浪费时间;2、是充分利用二叉链表中的空链域, 将遍历过程中结点的前驱、 后继信息保存下来。在有n个结点...原创 2019-11-23 15:57:40 · 487 阅读 · 0 评论 -
数据结构笔记(树、二叉树与森林 哈夫曼)
一、树和二叉树之间的对应关系(一)树:兄弟关系=二叉树:双亲和右孩子(二)树:双亲和长子=二叉树:双亲和左孩子树的前序遍历等价于二叉树的前序遍历树的后序遍历等价于二叉树的中序遍历二、森林、树、二叉树的转换(一)森林转换为二叉树1、 将森林中的每棵树转换成二叉树;2、从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树根结点的右孩子,当所有二叉树连起来后,此时所得到的二叉树...原创 2019-11-17 23:53:25 · 401 阅读 · 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 · 246 阅读 · 0 评论 -
数据结构笔记(二叉树链表的操作)
一、二叉树的建立设二叉树中的结点均为一个字符。假设扩展二叉树的前序遍历序列由键盘输入,root为指向根结点的指针,二叉链表的建立过程是:1、按扩展前序遍历序列输入结点的值2、如果输入结点值为“#”,则建立一棵空的子树3、否则,根结点申请空间,将输入值写入数据域中,4、以相同方法的创建根结点的左子树5、以相同的方法创建根结点的右子树递归方法template <class T&g...原创 2019-11-14 20:23:33 · 516 阅读 · 0 评论 -
数据结构笔记(二叉树逻辑结构)
一、二叉树的定义二叉树是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。二、二叉树的特点:(一)每个结点最多有两棵子树;(二) 二叉树是有序的,其次序不能任意颠倒。三、特殊的二叉树(一)斜树1、所有结点都只有左子树的二叉树称为左斜树;2、所有结点都只有右子树的二叉树称为右斜树;3、左斜树...原创 2019-11-12 19:06:38 · 877 阅读 · 1 评论 -
数据结构笔记(树)
经过线性表(包括几种特殊的线性表)的学习,对数据的存储和处理已经有了初步认识,关于树的逻辑结构学习有总结如下:(一)树的定义(采用递归方法)树:n(n≥0)个结点的有限集合。(当n=0时,称为空树)任意一棵非空树满足以下条件:1、有且仅有一个特定的称为根的结点;2、当n>1时,除根结点之外的其余结点被分成m(m>0)个互不相交的有限集合T1,T2,… ,Tm,其中每个集合又是一棵树...原创 2019-11-12 18:46:07 · 222 阅读 · 0 评论 -
数据结构笔记(多维数组)
一、几种特殊线性表(一)线性表——具有相同类型的数据元素的有限序列。(二)特殊线性表1、栈——仅在表尾进行插入和删除操作的线性表。2、队列——在一端进行插入操作,而另一端进行删除操作的线性表。3、串——零个或多个字符组成的有限序列(被限制元素的类型为字符) 。4、(多维)数组——线性表中的数据元素可以是线性表,但所有元素的类型相同。5、广义表——线性表中的数据元素可以是线性表,且元素...原创 2019-11-09 21:07:31 · 436 阅读 · 0 评论 -
数据结构笔记(字符串)
一、串的逻辑结构(一)字符串的定义1、串:零个或多个字符组成的有限序列。2、串长度:串中所包含的字符个数。3、空串:长度为0的串,记为:" “。非空串通常记为:S=” s1 s2 …… sn "其中:S是串名,双引号是定界符,双引号引起来的部分是串值 ,si(1≤i≤n)是一个任意字符。4、子串:串中任意个连续的字符组成的子序列。5、主串:包含子串的串。6、子串的位置:子串的第...原创 2019-11-09 20:28:30 · 239 阅读 · 0 评论 -
数据结构笔记(队列)
一、队列的逻辑结构(一)队列:只允许在一端进行插入操作,而另一端进行删除操作的线性表。(二)空队列:不含任何数据元素的队列。 允许插入(也称入队、进队)的一端称为队尾,允许删除(也称出队)的一端称为队头。二、队列的顺序存储结构及实现(一)改进出队的时间性能放宽队列的所有元素必须存储在数组的前n个单元这一条件 ,只要求队列的元素存储在数组中连续的位置。1、设置队头、队尾两个指针(fron...原创 2019-11-08 23:13:58 · 248 阅读 · 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 · 201 阅读 · 0 评论 -
数据结构笔记(线性表二)
一、循环链表(一)定义:将单链表或者双链表的头尾结点链接起来,就是一个循环链表。不增加额外存储花销,却给不少操作带来了方便。从循环表中任一结点出发,都能访问到表中其他结点。(二)特点:首尾相接的链表。可以从任一节点出发,访问链表中的所有节点。判断循环链表中尾结点的特点:q->next==firsttemplate <class T>struct Node{ ...原创 2019-11-04 22:22:44 · 161 阅读 · 0 评论 -
数据结构笔记(线性表一)
数据结构博客(一)一、绪论1、数据:是对客观事物的符号表示,在计算机科学中是指能输入到计算机并被计算机程序处理的符号的总称,一般可分为数值数据、文本数据、图形图像数据和音响数据等。2、数据元素:是数据的基本单位,也可以称为结点,在计算机程序中通常作为一个整体进行考虑,一般由若干数据项组成,数据项是构成数据元素最小的、不可分割的单位。3、数据结构:相互之间存在一定关系的数据的集合,是数据及其...原创 2019-09-23 22:42:41 · 191 阅读 · 0 评论