自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 定点数的乘法和除法

首先来看原码的乘法。

2025-08-05 10:27:38 187

原创 移位运算以及定点数的加减法操作

首先介绍一下移位运算根据思维导图来看,分为算术移位、逻辑移位、循环移位三种移位:通过改变各个数码位和小数点的相对位置,从而改变各数码位的位权。参照与十进制的移位(对于基数10来说)二进制的移位可用移位运算实现乘法、除法(对于基数2来说)。

2025-07-29 22:16:31 763

原创 加法器 以及ALU(逻辑算术单元)

框架,首先介绍原理,然后引入一位加法器最后再引入多位加法器最后引入带符号的加法器这一节涉及到的硬件电路的知识理解就好,实在看不懂就跳过,但是封装以后的功能必须看懂。这是一个一般的加法过程涉及到的必要元素图中已经给出,加主要就是上面这五部分,首先对于是输入的内容我们不需要管接下来我们看本为和,因为二进制加法满二进一的特性使得我们可以采用异或来算本位和。。可以采用 下面的电路来实现对于向高位的进位来说需要考虑的元素就比较多了。需要考虑加数被加数低位的进位这三个因素,同时结合二进制数的加法规则来看。

2025-07-28 18:13:03 933

原创 相关数电知识

逻辑门电路主要采用上面这张图片来讲解。首先看与,看一下他的表达式再看真值表需要记住的就是同一为1与门电路这里我为什么采用这种讲解方式,应为这是很基础的电路知识你只需要直接背下来即可不需要太多理解,它属于电路中基础的基础。接下来看或表达式同0为0真值表门电路;非门接下来就是复合电路了与非门就是在与门电路的结果出加一个非门与门的真值是同一为1与非门的真值是同一为0接下来看或非就是在或门的结果处加一个非门或门的真值是同0为0,或非门的真值是同0为1接下来看异或。

2025-07-27 16:16:06 198

原创 强制类型转换以及数位扩展

其实就是这张图片的事可以看到有符号数转换成无符号数就是直接转换过去的事情。也就是所谓的不改变数据内容,改变解释方式。再看长整数变短整数,直接截断高位就好有关于长短整数的鉴别具体问题具体分析参考你所采用的语言。短整数变长整数,直接采用符号扩展,因为C语言中定点整数是用“补码”存储的这里涉及零扩展和位扩展的问题。

2025-07-27 15:11:38 206

原创 定点数的表示

首先区分定点数和浮点数的区别上面是采用了十进制的表示采用二进制的表示也一样。定点数的表示包括了有符号数和无符号数的表示具体框架如下图。

2025-07-27 14:55:14 318

原创 二、八、十、十六进制转换

首先介绍一下基数的概念,知道基数的概念以后就能很好的区分各进制了。基数:每个数码位所用到的不同符号的个数,r进制的基数为r由这个概念可以很清晰的知道二八十十六进制之间的区别二进制它只有零和一可以表示基数八进制可以用0到7来表示基数十进制可以用零到九来表示基数十六进制可以用0到F来表示基数接下来介绍一下任意进制转十进制。

2025-07-20 16:50:32 302

原创 计算机组成原理,开篇导学

在计算机发展的过程中最早出现的语言是汇编语言,它类似于一种助记符它包含了一些简单的操作,(LOAD,ADD,MUL,JUMP,DIV)等操作,K=Kilo=千=10^3,M=Million=百万=10^6,G=Giga=十亿=10^9 ,T=Tera=万亿= 10^12。接下来介绍一下计算机的多级层次结构的划分,这里的划分是站在计组这门科目的划分,其他科目的划分可能多少会有一些出入但是没问题。IR传输信息给CU。在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直。

2025-07-15 18:14:36 868

原创 堆排序以及其插入删除

接下来看一下堆排序的完整代码。接下来的才是完整堆排序的思想堆排序:每⼀趟将堆顶元素加⼊有序⼦序列(与待排序序列中的最后⼀个元素交换)并将待排序元素序列再次调整为⼤根堆(⼩元素不断“下坠”)第一步交换9 和87然后新的大根堆需要length-1以方便重新排堆(让87直接输出到数组末尾同时重新拍大根堆不算87)调整如下再一次首元素和末尾元素然后再一次调整剩下的元素的大根堆同时新大根堆的调整长度需要减1.再次断开一个元素,再次调整大根堆剩下操作如此往复即可n-1趟 处理之后:

2025-07-14 22:04:47 1242

原创 简单排序。

确保最小元素的位置是j保存的。同时一直执行第二个循环跑完第一趟找到一个最小的元素将他的值赋给min然后退出第二个for循环执行第一个for循环的最后一个语句如果min的位置不是当前的i的话就交换位置。看代码主体,第一步用了一个for循环确保从头到尾排序整个数组,接着定义了一个局部变量min,同时假定每次的初始min为i扫描到的对应数组下标里面的值。以此类推,反正就是每一趟找出一个最小的元素来加入到排序的序列里面最新的位置。对于简单排序需要掌握的内容非常少,正如题目说的一样它很简单。接下来看一边简单的过程。

2025-07-14 15:22:06 225

原创 冒泡排序和快速排序

其实冒泡排序和快速排序都属于交换排序的范畴什么是交换排序,可以参照一下前面的希尔排序代码里面的两个元素比较大小交换位置。同样的冒泡排序也是比较两个元素大小然后交换位置。这里讲解的代码是从后往前赶同时我们也可以从前往后赶。从后往前(或从前往后)两两⽐较相邻元素的值,若为逆序(即A[i-1]>A[i]),则交换它们,直到序列⽐较完。称这样过程为“⼀趟”冒泡排序。接下来演示一下过程就是这样的从后往前的元素依次比较若是前面个元素大的话就交换位置使得小的个元素在靠前的位置。

2025-07-11 22:44:39 990

原创 插入排序和希尔排序

由于这章涉及到排下序算法的实现就会有很多的代码,所以讲解方式为每张图片的代码解读首先来点前言,对于排序算法的评判标准,一个是复杂度还有一个就是稳定性对于稳定性的解读看下里面这张图片接下来看第一个算法。

2025-07-11 16:31:04 737

原创 B树和B+树

B树,⼜称多路平衡查找树,B树中所被允许的孩⼦个数的最⼤值称为B树的阶,通常⽤m表示。⼀棵m阶B树或为空树,或为满⾜如下特性的m叉树:408算B树的⾼度不包括叶⼦结点(失败结点)最⼤⾼度——让各层的分叉尽可能的少n个关键字的B树必有n+1个叶⼦结点。

2025-07-10 23:29:35 1562

原创 散链表基本操作讲解

简单概括就是,包含所有关键字同时映射后不能超出给定的数组范围同时还要减少冲突且简单。

2025-07-10 22:37:54 1203

原创 平衡二叉树的删除操作

对于平衡二叉树的操作应对与考试只需要模拟出过程即可,且他的过程和插入的平衡方法一样,不一样的只是对于平衡因子的计算上。④根据孙子的位置,调整平衡(LL/RR/LR/RL)• 若删除的结点只有一个子树,用子树顶替删除位置。• 若删除的结点有两棵子树,用前驱(或后继)结点。• 若删除的结点只有一个子树,用子树顶替删除位置。• 若删除的结点有两棵子树,用前驱(或后继)结点。• 若删除的结点只有一个子树,用子树顶替删除位置。• 若删除的结点有两棵子树,用前驱(或后继)结点。

2025-07-09 21:04:10 338

原创 平衡二叉树的调整

对于60 ,60小于66因该在左面,同时大于50应该在50的右孩子处同时对于63来说63小于66大于60,所以63应该是60的右孩子(这里图中连线失误了,自行调整一下)注意一下我调整后的这张图片 对于50 和68后面的结构我们进行照抄就好,对于66下面的东西(60 67 63)我们对于每一个数字都要严格遵守BST的规则。对于67我们可以看到67大于66所以应该在书的右面,同时67小于68则应该在68的左孩子处。1,计算平衡因子,可以从一棵树的最底部开始来计算平衡因子找到最小的不平很二叉树。

2025-07-09 20:13:51 331

原创 二叉排序树和平衡二叉树

首先介绍概念;二叉排序树指的是左值子树小于根节点小于右子树左子树结点值< 根结点值< 右子树结点值这就使得在中序遍历的时候可以得到一个有序地序列解析来介绍一下二叉树的查找操作解释一下代码,其实就是采用了一个while循环首先构建一个结构体BSTnode 然后在查找函数里面调用一下首先建立的BST(二叉排序树)接下来重点关注一下while循环,当树不为空的时候且关键字不相同的时候,借助二叉排序树左<中<右的特性来进行循环条件的设立。当最终满足key相等的时候返回T。

2025-07-09 19:05:14 829

原创 第七章 查找

这里介绍数据结构里面的查找,在数据集合中寻找满⾜某种条件的数据元素的过程称为查找。关键字 —— 数据元素中唯⼀标识该元素的某个数据项的值,使⽤基于关键字的查找,查找结果应该是唯⼀的。静态查找表:只需要经行查找不需要改变里面的内容。动态查找表;需要进行查找同时还需要改变表中的内容。查找长度,指的是在查找过程中需要对比的次数。平均查找长度,查找次数的平均值一般需要考虑查找成功的ASL和查找失败的ASL。

2025-07-09 15:12:52 678

原创 拓扑排序和关键路径

拓扑排序和关键路径的应用很大一部分都是应用在工程问题里面,这一应用被广泛使用在物联网等邻域里面,图中可以对工程的实施做出一个很好的规划。这也是两点我放在一起讲的原因。

2025-06-27 15:34:41 995

原创 有向无环图(DAG)描述表达式

步骤,先将操作数排成一排置于最底层,然后标出运算符的生效顺序,再然后依照运算符的生效次序加入运算符注意分层,分层的意思就是如图。第三个*号生效时是由操作数b和c+d组成的,然而c+d已经占据了底部2层那么*号就只能在第三层了,就这样可以得到整个表达式如图。注意第三层需要调用到c+D那麽我们就只保留一份同时将第三层的调用指向我们保留的那一份就好了。注意我画红框的位置其实你会发现c+d*e是重复的那麽我们就可以只保留一份c+d*e。DAG描述表达式有一个前提,就是需要将表达式转换成树。接下来就是合体的过程。

2025-06-27 14:03:45 244

原创 最短路径三算法

主要有以上三种算法使用范围不一样,BFS无权图,dj算法适合有权图但是不能有负权值fl算法最复杂涉及到动态分析,如果看不懂可以有所取舍放弃fl算法。

2025-06-27 11:18:47 1231

原创 最⼩⽣成树

创建一个数组存储权值以及对应的顶点从小到大排列,从第一个位置开始检查是否属于同一集合,不连通就连起来,此时属于同一集合了。对于⼀个带权连通⽆向图G = (V, E),⽣成树不同,每棵树的权(即树中所有边上的权值。树,则T称为G的最⼩⽣成树(Minimum-Spanning-Tree, MST)。从指定结点开始循环遍历所有个结点,找到lowCost最低的,且还没加⼊树的顶点。设R为G的所有⽣成树的集合,若T为R中边的权值之和最⼩的⽣成。最⼩⽣成树可能有多个,但边的权值之和总是唯⼀且最⼩的。

2025-06-26 15:47:57 303

原创 图的深度优先(DFS)和广度(BFS)优先遍历

在提及两种遍历之前先介绍一下图的基本操作Adjacent(G,x,y):判断图G是否存在边<x, y>或(x, y)。• Neighbors(G,x):列出图G中与结点x邻接的边。• InsertVertex(G,x):在图G中插入顶点x。• DeleteVertex(G,x):从图G中删除顶点x。• AddEdge(G,x,y):若无向边(x, y)或有向边<x, y>不存在,则向图G中添加该边。

2025-06-26 13:23:30 817

原创 图的几种存储

求出入读需要遍历整个数组的对应的行或列,时间复杂度为N,同时需要注意一下矩阵的多少次方的可以得素An[i][j]等于由顶点i到顶点j的长度为n的路径的数目。主要定义了两个结构体,在这里面一定要分清楚弧头和弧尾,主要思想就是弧头弧尾的链接。对于无向图来说,边结点的数量是2|E|,整体空间复杂度为O(|V| + 2|E|)对于弧结点的处理来说弧头 相同就连接弧尾相同也链接但是注意相同弧头弧尾指针的位置。我给出的思路先画出头节点给出编号,不管头结点的入度,先只管出度,画出每个出度来。边结点的数量是2|E|,

2025-06-25 14:41:06 167

原创 图的基础概念

1.图是由顶和边集E构成的,记为G = (V, E),用|V|表示图G中顶点的个数,|E|表示图G中边的条数。边是顶点的无序对,记为(v, w)或(w, v),因为(v, w) = (w, v),其中v、w是顶点。从顶点u出发到顶点v的最短路径若存在,则此路径的长度称为从u到v的距离。简单来说就是在原本的顶点集中选取出来部分的顶点并带上他们之间的边后任然满足图的定义。弧是顶点的有序对,记为<v, w>,其中v、w是顶点,v称为。2.图分为有向图和无向图,有向图的边是带有箭头方向的,无向图的边没有方向。

2025-06-25 11:37:11 705

原创 哈夫曼树讲解

为什么采用哈弗曼编码?且针对不同的频度可以设置不一样的哈夫曼编码,但是。树的带权路径长度:树中所有叶结点的带权路径长度之和(WPL, Weighted Path Length)结点的带权路径长度:从树的根到该结点的路径长度(经过的边数)与该结点上权值的乘积。若没有一个编码是另一个编码的前缀,则称这样的编码为前缀编码。结点的权:有某种现实含义的数值(如:表示结点的重要性等)再拿新树和剩下的小节点作为一堆选取两个最小的再相加。从一堆的小节点中选取两个权值最小的点构成一颗新树。新树的根的权值为两个小节点相加。

2025-06-24 00:03:51 221

原创 树和森林的遍历

树的后根遍历其实就是使用二叉树的后序遍历方法,不过对于树的第二层的处理顺序是从左到右,也就是说将它一步步地拆分,简言之由于是后序,就需要先将第二层的从左到右排列再加上根节点。树和森林的遍历并不是都有着完整的先中后序加层次遍历的有的只有下方图片标出来的遍历方法。注意树的先序和后序遍历可以叫做深度优先遍历,层次遍历叫做广度优先遍历。接下来是森林的遍历,森林的遍历多借助于森林转化成的二叉树的遍历。森林的先中遍历建议转换成二叉树,先对先中对中。注意树和森林的遍历参考二叉树的先中后序遍历。首先来进行树的遍历讲解。

2025-06-23 22:55:35 472

原创 树、森林与二叉树的相互转换

首先介绍树转换成二叉树规则;树与二叉树转换技巧:①先在二叉树中,画一个根节点。②按“树的层序”依次处理每个结点。简单来说就是先画出根节点,然后一层一层的处理,处理某节点的下一层时,将对因节点的左右兄弟节点穿成一串(糖葫芦)挂载到该根节点的的下面第一个直接连接的孩子在根节点的左侧例如;大例子。

2025-06-23 22:19:46 187

原创 树的存储结构

双亲表示法,采用纯顺序存储的方式,定义一个数组,第一列先存储各个节点的位置,第二列存储其父节点对应的序号。首先定义一个链表里面包含两个数据域,一个是孩子节点的数组位置,一个是下一个孩子的指针。接下来总结优缺点,优点时方便找到父节点,缺点是找到孩子节点麻烦,需要重新遍历数组。建立一个数组第一列存储元素第二列存储链表链表里面存孩子的序号。父节点(双亲)表示法,孩子表示法,这里采用的是顺序存储加链式存储的方法。同样的孩子表示法可以用于森林的表示。同时树的存储也可以用来存储森林。接下来是孩子表示法的介绍。

2025-06-23 22:02:13 232

原创 线索二叉树讲解

(为什么加粗?因为在这里我自己也懵了一下)inoder函数体在每一次生成中序序列中的元素(DGBEAFC)时都会调用到visit函数,这就实现了*q的动态切换。第二,重投开始一次遍历,这里主要由inoder函数实现per先指向空q动态变化(一直指向当时生成的中序序列节点。为什么?这里请看上面的解释)一直遍历(inoder代码可以实现)直到满足第三步。第三,当p=q时per是前驱节点,当p=per时q是后继节点。

2025-06-23 13:09:56 938

原创 遍历序列构建二叉树

首先补充一下层次遍历的内容,前面介绍了先中后遍历但是没有介绍层次遍历;对于我们看图来找出层次遍历主要遵循一个先上后下,先左后右的规则。对于算法的话注意一下这里的算法思想就好,首先构造一个队列,其次根节点入队,并访问其左右孩子(必须先左后右,来符合先左后右的遍历规则),输出第一个节点并且访问其孩子重复操作。这样就可以达到一层层的访问。

2025-06-22 18:01:43 320

原创 二叉树的先中后遍历

他的选取规则也是对应了先中后序的规则,注意这三张图中标黄色的东西,再结合先中后序的规则来看这种画图法就🆗了,这里对代码进行一下解读,你可以发现它其实就是一个递归函数,他递归的核心代码对应了他的遍历规则。

2025-06-22 11:14:19 274

原创 二叉树的存储

对于图片上的非完全二叉树,这里可以先构建一个完全二叉树,然后只采取有用的部分即可,其他部分用null填充,但是需要注意有关于i下属节点的判别应为有些节点是用null来表示所以对于下属结点的判别就需要正常的判别再加上是否为空来进行判别了。解释一下为什么有n+1个空链域,每个节点两个指针域共有2n个指针域,除了头节点外每个节点都连接着一个指针,即n-1个指针,两式相加减得出n+1。结构的定义,注意这里是顺序存储所以没有指针。,关于下标的问题需要具体分析。在这里需要注意这些判断条件,都是根据二叉树的性质来的。

2025-06-22 11:03:34 141

原创 二叉树的概念

二叉树的特点:①每个结点至多只有两棵子树②左右子树不能颠倒(二叉树是有序树),可以为空树!一定要区别于度为2 的树。1.度为0的节点比度为2 的节点多一个。以下内容第七章会介绍。

2025-06-22 10:19:26 303

原创 树的概念解析

摘要:树结构的基本概念包括节点的度(子节点数)、树的度(最大节点度值)。分支节点指有子节点的节点,叶节点则无子节点。节点层次从根(第1层)算起,深度即所在层次,树高为最大层次。有序树子节点不可换位,无序树可换。路径指节点序列,路径长度为边数。森林由多棵树组成。树的性质:1)总节点数=所有节点度之和+1;2)度为m的树第i层最多有m^(i-1)个节点。n叉树允许子节点数<n,而度为n的树必须具有n个子节点。

2025-06-21 18:34:24 323

原创 考研线性表习题讲解

队列是指先进先出的一种方式同时头出元素为进元素,因此为了方便插入元素就需要一个尾指针使得插入元素的时间复杂度为1删除时间复杂度的操作也为一,虽然说需要带尾指针的循环单链表,但是这句话就包含了一个重要条件头指针是一定有的。2n个元素链表的效率要高于顺序表,首先复习一下顺序表可以进行随机访问时间复杂度为1,链表可以进行插入操作时间复杂度为1,这些是他们各自的优点,缺点:顺序表插入一个人元素的平均时间复杂度为n,链表随机访问一个元素的时间复杂度为n。最后一个位置插入和第一个位置删除,,带尾指针的循环单链表。

2025-04-22 12:20:56 590

原创 线性表快速讲解

首先申明,文章的所有代码正确率可以保证,但是需要你自己去逐行分析,因为这样可以提升读者的代码理解能力对结构有更加清晰的认识同时作者在写作时有一些函数的大小写没有区分这里需要注意一下,可以放进编译器里面去纠错。很多同学在学习数据结构这门课时后期常常会感到很痛苦,这是因为没打好基础导致后面的房屋越建越斜。而线性表就是整个数据结构的基础,为什么这么说呢?线性表可以带盖概括为两部分,顺序表和链表,在后期的学习中很多结构都会用到链表为基础,那么你的链表这里都似懂非懂请问你还如何更好的进行后期的学习呢?

2025-04-18 14:04:06 1085 1

空空如也

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

TA关注的人

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