自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李白

此生是否有幸能在这个行业有所建树

  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 数据结构(44)图的定义和常见术语

1、图的定义图G由顶点集V和边集E组成,记为G=(V,E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)集合。若V={ v1,v2,...,vn},则用|V|表示图G中顶点的个数,也称图G的阶,E={(u,v)|u∈V,v∈V},用|E|表示图G中边的条数。注意:线性表可以是空表,树也可以是空树,但图不可以是空图,就是说,图中不能一个顶点也没有,图的顶点集V一定非空,但边集E可以为空,此时图中只有顶点而没有边。2、常见术语和概念2.1、有向图若E..

2020-06-23 09:15:12 1895 1

原创 数据结构(36)哈夫曼树和哈夫曼编码

目录1、哈夫曼树的定义2、哈夫曼树的构造3、哈夫曼编码1、哈夫曼树的定义在许多应用中,树中结点常常被赋予一个表示某种意义的数值,称为该结点的权。从树的根到任意结点的路径长度(经过的边数)与该结点上权值的乘积,称为该结点的带权路径长度。树中所有叶结点的带权路径长度之和称为该树的带权路径长度,记为式中,Wi是第i个叶结点所带的权值,Li是该叶结点到根节点的路径长度。在含有n个带权叶结点的二叉树中,其中带权路径长度(WPL)最小的二叉树称为哈夫曼树,也称最优二叉树。例如,图36-1

2020-06-21 19:39:04 2626

原创 数据结构(35)平衡二叉树

1、平衡二叉树(BBT,Binary Balance Tree)的定义为了避免树的高度增长过快,降低二叉排序树的性能,规定在插入和删除二叉树结点时,要保证任意结点的左、右子树高度差不超过1,将这样的二叉树称为平衡二叉树,简称平衡树。定义结点左子树与右子树的高度差为该结点的平衡银子,则平衡二叉界限的平衡银子的值只可能是-1、0或1。因此,平衡二叉树可定义为或者使一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树。且左子树和右子树的高度差的绝对值不超过1。图35-1 平衡..

2020-06-21 16:37:44 2068

原创 数据结构(34)二叉排序树

目录1、二叉排序树(BST,Binary Sort Tree)定义2、二叉排序树的查找3、二叉排序树的插入4、二叉排序树的构造6、二叉排序树的查找效率分析7、二叉排序树与二分排序对比1、二叉排序树(BST,Binary Sort Tree)定义二叉排序树(也称为二叉查找树)或者是一棵空树,或者是具有以下特性的二叉树:1)若左子树非空,则左子树上所有结点的值均小于根节点的值。2)若右子树非空,则右子树上所有结点的值均大于根节点的值。3)左、右子树也分别是一棵二叉排序

2020-06-20 23:04:02 10841 1

原创 数据结构(33)树的应用--并查集

并查集是一种简单的集合表示,它支持以下3种操作:1)Union(S,Root1,Root2):把集合S中的子集合Root2并入子集合Root1。要求Root1和Root2互不相交,否则不执行合并。2)Find(S,x):查找集合S中单元素x所在的子集合,并返回该子集合的名字。3)Initial(S):将集合S中的每个元素都初始化为只有一个单元素的子集合。通常用树(森林)的双亲表示法作为并查集的存储结构,每个子集合以一棵树表示。所有表示子集合的树,构成表示全集合的森林,存放在双亲表示数组内。通

2020-06-20 20:33:15 449 2

原创 数据结构(32)树、森林

1、树的存储结构树的存储方式有很多,即可采用顺序存储结构,又可采用链式存储结构,但无论采用何种存储方式,都要求能唯一地反映树中各结点之间的逻辑关系,这里介绍3中常用的存储结构。1.1、双亲表示法这种存储方式采用一组连续空间来存储各个结点,同时在每个结点中增设一个伪指针,指示其双亲结点在数组中的位置。如图32-1所示,根节点下标为0,其伪指针域为-1。 图32-1 树的双亲表示法双亲表示法的存储结构描述如下:...

2020-06-19 23:53:45 2874

原创 数据结构(31)线索二叉树(通过中序非递归遍历建立中序线索二叉树)

1、基本概念遍历二叉树是以一定的规则将二叉树中的结点排列成一个线性序列,从而得到几种遍历序列,使得该序列中的每个结点(第一个和最后一个结点除外)都有一个直接前驱和直接后继。传统的二叉链表存储仅能体现一种父子关系,不能直接得到结点在遍历中的前驱或后继。前面提到,在含n个结点的二叉树中,有n+1个空指针。由此设想能否利用这些空指针来存放指向其前驱或后继的指针?这样就可以像遍历单链表那样方便地遍历二叉树。引入线索二叉树正是为了加快查找结点前驱和后继的速度。规定:若无左子树。令lchild指向其前驱结点

2020-06-19 21:22:35 1323

原创 数据结构(30)二叉树层次遍历

图30-1所示为二叉树的层次遍历,即按照箭头所指方向,按照1,2,3,4的层次顺序,对二叉树中的各个结点进行访问。 图30-1 二叉树的层次遍历要进行层次遍历,需要借助一个队列。先将二叉树根结点入队,然后出队,访问出队结点,若它有左子树,则将左子树根节点入队;若它有右子树,则将右子树根节点入队。然后出队,访问出队结点......如此反复,直至队列为空。二叉树的层次遍历算法如下:template<typename DataType>inline voi...

2020-06-18 15:35:10 1005

原创 数据结构(29)二叉树的先序、中序、后序遍历的递归形式与非递归形式;先序、中序、后序已知两个求另一个或者直接求二叉树(附带一个本人git上的关于二叉树的一个小型c++模板库)

二叉树的遍历是

2020-06-14 23:52:48 1222

原创 数据结构(28)二叉树易混点

1、下列关于二叉树的说法中,正确的是(C) A. 度为2的有序树就是二叉树。 B. 含有n个结点的二叉树的高度为⌊log2(n)⌋+1。 C. 在完全二叉树中,若一个结点没有左孩子,则它必是叶节点。 D. 在任意一棵非空二叉排序树中,删除某结点后又将其插入,则所得二叉排序树与删除前原二叉排序树相同。解析:A:度为2的有序树和二叉树的区别在于,当某个分支结点有一个孩子的时候,度为2的二叉树部分左右孩子,而二叉树分左右孩子,即使只有一个孩子。D...

2020-06-14 21:00:32 3787

原创 数据结构(27)二叉树的定义、性质、存储结构和几个特殊二叉树

目录1、二叉树的定义2、几个特殊的二叉树2.1、满二叉树2.2、完全二叉树2.3、二叉排序树2.4、平衡二叉树3、二叉树的性质4、二叉树的存储结构、4.1、顺序存储结构4.2、二叉树的链式存储1、二叉树的定义二叉树是另一种树形结构,其特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且二叉树的子树有左右之分,其次序不能颠倒。与树相似,二叉树也以递归的形式定义。二叉树是n(n>=0)个结点的有限集合:①或者为空二叉树,即n=0。

2020-06-14 14:51:38 913

原创 数据结构(26)树的基本概念

目录1、树的定义2、基本术语3、树的性质1、树的定义树是n(n>=0)个节点的有限集。当n=0时,称为空树。在任意一颗非空树中应满足:1)有且仅有一个特定的称为根的结点。2)当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,...,Tm,其中每个集合本身又是一棵树,并且称为根的子树。显然,树的定义是递归的,即在树的定义中又用到了其自身,树是一种递归的数据结构。树作为一种逻辑结构,同时也是一种分层结构,具有以下两个特点:1)树的根结点没有

2020-06-13 23:02:19 1877

原创 算法(4)KMP算法图文易懂版(看毛片算法,这下要是还看不懂你就来打我吧)

目录1、字符串的前缀、后缀、最长相等前后缀2、部分匹配值(Partial Match,PM)3、暴力匹配4、KMP算法KMP算法其实不难,只是市面上的千人千面的描述,把一个简单的算法越描述越乱了。KMP由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)比如在主串s=“ababcabcacbab”中找出模式串p="abcac"第一次出现的位置。1、字符串的前缀、后缀、最长相等前后缀前缀:除最后一个

2020-06-13 11:10:34 20302 1

原创 数据结构(24)串的存储方式和基本操作

串(string)是由零个或多个字符组成的有限序列,一般记为S='a1a2...an'(n>=0)其中,S是串名,单引号括起来的字符序列是串的值;ai可以是字母、数字或其他字符;串中字符的个数n称为串的长度。n=0时的串称为空串。串中任意个连续的字符组成的子序列称为该串的子串...

2020-06-08 16:25:52 3352

原创 数据结构(22)特殊矩阵的压缩存储

1、假设一个算术表达式中包含圆括号、方括号和花括号3种类型的括号 ,编写一个算法来别表达式中的括号是否配对,以字符“\0”作为算术表达式的结束符。bool isPair(char *str){ int i = 0; stack<char> mystack; while (*(str+i) != '\0') { if (*(str + i) == '{' || *(str + i) == '[' || *(str + i) == '(')...

2020-06-07 15:54:45 4334 1

原创 从拜占庭将军问题初识区块链

1、问题描述拜占庭帝国即中世纪的土耳其,拥有巨大的财富,周围10个邻邦垂诞已久,但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵的都会失败,同时也有可能自身被其他9个邻邦入侵。拜占庭帝国防御能力如此之强,至少要有十个邻邦中的一半以上同时进攻,才有可能攻破。然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。于是每一方都小心行事,不敢轻易相信邻国。这就是拜占庭将军问题。在拜占庭问题里,各邻国最重要的事情是:所有将军如何能过达成共

2020-06-03 14:25:31 457

原创 数据结构(21)队列的简单应用

1、若希望循环队列中的元素都能得到利用,则需要设置一个标志域tag,并以tag的值为0或1来区分队头指针front和队尾指针rear相同时的队列是“空”还是“满”。试编写于此结构相应的入队和出队算法。2、利用两个栈S1,S2来模拟一个队列,月已知栈的4个运算定义如下:Push(S,x); //元素x入栈Pop(S,x); //S出栈并将出栈的值赋给xStackEmpty(S); //判断栈是否为空StackOverflow(S); //判断栈是否满如何利用栈的运...

2020-06-02 17:13:03 1303 2

原创 数据结构(20)栈的简单应用

1、有5个元素,其入栈次序依次为A,B,C,D,E,在各种可能的出栈次序中,第一个出栈元素为C且第二个出栈元素为D的出栈序列有哪几个?解析:第一个元素为C说明在C出栈之前,栈中元素依次从栈底到栈顶为A,B,C,所以AB元素的出栈序列只能是B在A之前出栈这一种情况;第二个出栈元素为D,说明C出栈后,D接着入栈,出栈;综合分析可得:出栈的顺序有种:CDEBA,CDBEA,CDBAE2、若元素的进栈序列为A,B,C,D,E,运用栈操作,能否得到栈序列B,C,A,E,D和D,B,A,C.

2020-06-01 10:43:58 4093

linux内核代码-5.6

linux内核代码-5.6

2023-01-15

2.5G Ethernet LINUX driver r8125 for kernel up to 5.19

网卡驱动

2022-12-22

CPP-Summit 2019演讲讲义.zip

2019年c++开发大会资料 ppt整理

2020-11-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除