自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 利用Qt制作可视动画模拟生产者-消费者问题且页面置换算法

在操作系统地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算。本文通过分析操作系统进程同步与互斥的问题,然后利用互斥锁和线程模拟进程与同步,并利用该算法设计了生产者-消费者模拟演示系统。生产者模拟多个进程生产指令放入指令队列中,消费者模拟处理机从指令队列中取出指令并映射为页进行处理。利用Qt产生动画,模拟演示这一过程更加生动形象,可以用于操作系统的教学中。

2023-12-17 11:01:56 397 1

原创 操作系统 实验9:页面置换算法模拟设计 (FIFO)(LRU)(OPT)(LFR)(NUR) --使用c++实现 (下)

操作系统 实验9:页面置换算法模拟设计 (FIFO)(LRU)(OPT)(LFR)(NUR) --使用c++实现 (下)最佳页面置换算法是一种基于未来的算法,它不可实现,但是可以作为评估其他页面置换算法的标准。先进先出底层就是一个循环单指针队列,通过earliest 指针取余实现循环。一切都非常简单,这是最简单的也是最早出现的页面置换算法。最近最久未使用算法, 故名思意,就是在内存当中距离现在-上一次访问在最早之前的页被替换掉。... ....

2023-11-26 20:38:19 1622 2

原创 操作系统 实验9:页面置换算法模拟设计 (FIFO)(LRU)(OPT)(LFR)(NUR) --使用c++实现 (上)

操作系统 实验9:页面置换算法模拟设计 (FIFO)(LRU)(OPT)(LFR)(NUR) --使用c++实现 (上)1. 除了opt,其他四种算法实现思路基本相同,使用多态指针可以更好的认知四种算法的相同之处和不同之处。 2. 交互部分有大量的信息输出,单纯使用常规使用c语言的方式会导致代码冗余,重复部分占比较大,使用c++多态指针,虚函数,重载输出流可以一定程度缓解这个问题。3. 通过类的析构函数可以更好的管理内存,避免迭代开空间,迭代释放空间,在代码量较大的情况减少内存泄漏的可能。

2023-11-26 19:39:28 2758 1

原创 单片机接口与技术 实验03 显示器与按键

分享单片机编程的思路,针对lcd,其实就是对写入命令进行封装。二次封装的原因同为什么不用机器语言编程而使用汇编语言助记符时同样的,封装还可以减少代码体积,增强可读性等等。还分享了一些编程时候的技巧和编程思想。1、实验目的:(1)学习lcd 1602的编程与使用;(2)机械式复位开关button软件消抖的方法。

2023-10-11 01:57:46 1788

原创 单片机接口与技术 实验05 定时器/计数器

keil c51 单片机的实验5--定时器计数器控制直流电机的转动。(1)学习51单片机定时器/计数器的使用方法;(2)学习定时器实现PWM电机调速的方法。(3)继续巩固lcd1602的使用。(4)学习模块化开发的方法

2023-10-08 20:17:51 2006 1

原创 微机原理 实验09:DOS及BIOS中断调用

学习DOS及BIOS中断调用方法。巩固子程序(过程)设计、分支和循环结构程序设计的方法。主要做了一个输入程序,输入指定内容打印相对应的内容如果输入出错,则提示“ERROR!”。通过DOS还可以实现更多图形属性上的改变,大家可以好好学习了解一下。

2023-05-30 04:57:36 1496 2

原创 数据结构:Huffman编码/译码系统

这篇博客主要分享介绍我写的Huffman树的编码和译码系统,我写好的代码已经打包上传了,感兴趣的小伙伴可以下载玩一玩,还挺有意思的。Huffman编码就是靠字符出现的频次作为权值构建Huffman树,然后通过左右分支形成编码,相关知识点我也放上了我讲这一块知识点的相关博客。

2023-05-29 14:04:43 365

原创 数据结构 深度学习索引结构——用索引算法优化课本哈夫曼树的构造算法

本次主要是一篇学习经历和经验分享,希望对和我一样热爱学习的小伙伴们有所帮助我这从次写Huffman构造函数的时候和课本想的思路一致但是确是两条不一样的思路和方法,也希望我的经验可以帮助到大家,开拓视野思维。

2023-05-28 23:24:19 254

原创 数据结构 实验17:Huffman树和Huffman编码——学习理解哈夫曼树

这一期是完成最最最基本要求的Huffman树的创建和编码译码。越是深入学习,越会发现很多的需求和案例都是在身边的,脱离应用,单纯就写一个算法的实现感觉还是不那么能感受到学习的快乐,所以我后面还会有进阶版本的。

2023-05-28 19:55:17 2096

原创 数据结构 实验16:中序线索二叉树的基本操作

建立线索二叉树的思路差不多,这次主要是针对中序线索二叉树的基本操作,既可以找前驱,又可以找后继,最具有代表性明确思路,找后继遍历就得找到第一个元素,最左元素,然后依次找后继,有线索找线索,没线索找右子树的最左端。找前驱就得找最后一个元素,最右元素,然后依次找前驱,有线索访问线索,没有线索访问左子树的最右子树。线索化过程没有什么难度,就是中序遍历,将中间的print方法替换成我们想要的方法,需要注意的就是用一个pre指针,备份访问过的前驱结点,最后注意将头结点的线索化补充完整。

2023-05-24 23:06:46 1150

原创 数据结构 实验15(1-4班):二叉树的递归和非递归的基本操作

递归部分实现:创建,先、中、后、双序、层次遍历,每个结点左右子树交换。非递归部分实现:先、中序遍历,后序遍历并求二叉树中第一条最长的路径及长度,层次遍历并求最长路径长度并输出最长路径。掌握二叉树的递归和非递归遍历,其他的都是在基础上功能的替换,主要需要理解递归的原理和非递归的原理和应用。递归针对于单个结点的操作会让代码非常简洁,也很简单。非递归则是在一些针对过程的需求非常好用。

2023-05-24 21:57:31 418

原创 微机原理 实验08:子程序设计—求最大最小值的平均值(汇编语言)(理解段内和段外过程)

主要学习子程序(过程)的定义和调用,这里都是内部过程,内部过程分为段内过程,段外过程。方便大家理解这里用面对对象的类来进行类比,只是类比,汇编语言没有类的概念!段内过程就像在一个类里面,只用改变偏移地址即可调用。段外过程就像不在一个类中的函数,要调用就得申明,也就是这里存储要调用代码段的段地址和偏移地址。

2023-05-23 05:59:28 2573 3

原创 微机原理 实验07:循环结构程序设计——数据块移动和BCD码转换为二进制码(汇编语言)

养成好的编程习惯和思维:修改数据的入口尽量少和集中;我这次将入口都设置在数据段。本次分享的是用循环结构实现数据块的转移和bcd码转二进制编码。学会使用循环指令,掌握循环结构程序设计方法。掌握BCD码到二进制码的转换方法,巩固理解、掌握数据的不同进制的表示方法和在计算机中的存储方式。

2023-05-15 17:08:50 2910 1

原创 数据结构:线性表的知识点归纳和思维导图(栈、队列、串、数组、广义表)

分享写的数据结构广义表这一部分的思维导图,解释了在考研中,广义表,多维数组为什么是线性结构,并对这一部分知识点做了总结和归纳

2023-05-13 19:12:00 978 1

原创 数据结构 实验14(1-2班):(深入理解索引存储结构)三元组存储的稀疏矩阵建立行列索引并求鞍点

深入学习索引存储结构,在三元组外创建索引表,不影响三元组表本身存储。索引表除了存储三元组每行/列的第一个元素,还可以结合一些需求存储方便后续算法使用的元素。再者是需要分别三元组是行优先还是列优先,完善健壮性。求鞍点反而是最简单的,重点在索引的应用。

2023-05-11 20:23:00 610

原创 数据结构 实验14(3,4班):广义表的复制——使用两种存储结构完成广义表的备份:过程中,将原子型字符大小写互换,并求出广义表的长度和深度

广义表两种存储结构:表头表尾链结构、孩子兄弟链结构。题目要求是在完成一遍遍历的同时完成三个操作:原子的元素字母大小写互换、求表深度,求表长度。详细介绍思路,代码分析,和展示。中间对两种存储结构差异性在代码和代码设计上如何体现。最后对两种存储结构在遍历时候的优劣做出了总结

2023-05-10 05:46:48 302

原创 微机原理 实验06(emu086):分支结构程序设计――数据块移动

设计一个通用的数据块间数据搬移程序。要求数据块传输过程采用串操作指令(也可以采用循环指令)。主要为代码展示和实验过程记录:1、学会使用条件判断转移指令,掌握分支程序的设计。2、掌握内存中数据块移动方法,巩固串操作指令的使用。3、进一步规范程序流程图的绘制(正确使用流程图的符号,如矩形、菱形、箭头等符号)。

2023-05-08 07:48:20 2435

原创 数据结构:对于递归的理解和应用经验

部分同学在写广义表的创建和输出时,在对递归代码的阅读,理解和写递归代码时有些许困难和迷茫。这篇博客主体是递归,循环会作为递归比较的客体,比较简略。首先会说明一些自己在递归上的理解,和相较于循环,递归的优势(不同于网上搜出来的优点缺点,那些东西讲的太简洁了,太抽象了,少了些废话,对于我们知识和见识不够深入的学生来说,有些难以体会和理解),我会主要根据自己写代码的经验讲实际的应用,最后我会完全从头到尾的演示我在写广义表的创建和输出的时候,思路和思考方式,过程演示,希望对同学们有帮助。

2023-05-07 20:34:49 645 1

原创 数据结构:深入理解广义表常用的两种存储结构(头尾链,孩子兄弟链)

深入学习广义表的两种存储结构,还有遇到空表时候画图,主要将两种结构给放在一期进行比较;巩固学习知识,特别是表尾要注意加一层,还有头尾链空表时候破坏层次结构。最后写广义表的算法一定要掌握递归。

2023-05-05 17:35:05 5471 9

原创 数据结构 实验13(1-4班)_广义表算法库(两种存储结构:孩子兄弟链,头尾链)

建立广义表的算法库,包括glist.h头文件,glist.c源文件,main.c测试;简单介绍了广义表常用的两种存储结构:头尾链和孩子兄弟链;因为用孩子兄弟链网上和书上很多,所以我采用的头尾链的方式存储算法库包含四个主要函数:广义表创建(CreateGL),广义表输出(DispGL),广义表求长度(GLLength),广义表求深度(GLDepth),代码展示讲解,并用main()函数测试

2023-05-05 12:44:00 346 1

原创 仅用 O(1) 的空间,将字符数组按“数字字符”“字母字符”和“其他字符”分成 3 部分并排序,第一部分是数字字符‘0‘-‘9‘,第二部分是字母字符‘a‘-‘z‘和‘A‘-‘Z‘,第三部分是其他字符。

仅用 O(1) 的空间,将字符数组按“数字字符”“字母字符”和“其他字符”分成 3 部分并排序,第一部分是数字字符'0'-'9',第二部分是字母字符'a'-'z'和'A'-'Z',第三部分是其他字符。

2023-05-04 13:43:00 223 2

数据结构:Huffman编码/译码系统

Huffman树的编码和译码操作系统,包含两个头文件和对应的源文件,一个测试用的main源文件;欢迎大家学习和交流 1.我将访问的文件名以宏定义的方式放在源文件内,可以自行修改 默认: 读取huffman_test_file.txt---> 编码 ---> 生成huffman_encoding_file.txt 读取huffman_encoding_file.txt ---> 译码 ---> 生成huffman_decoding_file.txt 2.我将一些测试健壮性的开关宏设置在了开头,方便调试程序可以自行打开关闭 3.void LookupDeFile();是dnhuffman程序入口,剩下的方法都是在这个函数内被调用 void ReadFile();是enhuffman程序入口,剩下的方法都是在这个函数内被调用 4.enhuffman采用顺序存储,构造使用的是我自己优化后的索引查找 5.dehuffman采用链式结构,构造是用先序遍历

2023-05-29

数据结构-线性表-xmind思维导图

我用的是xmind,思维导图部分结点点开以后有批注,免费可放心食用。 思维导图包含四大块:线性表操作受限:栈,队列;线性表数据元素受限:串;数组;线性表的推广:广义表。在一些比较抽象的地方如:广义表的两种存储结构,三元组的索引存储,有相关配图辅助理解。 思维导图不是抄大纲,抄大纲可以取看书的目录。思维导图是对一个阶段学习的总结和知识的归纳,需要建立知识点之间的联系,将所学的知识可以根据较大区分度的地方进行划分,具有较大共通性的地方进行汇总。 串、栈、队列的区分度在于数据的运算和逻辑结构,而他们的存储结构常用的都是顺序表和链表。 广义表和数组都是更抽象的线性表,数组对数据元素要求更严苛,广义表则是放开了数据元素的限定。他们都可以是递归定义,数组可以是n维数组,n维数组存储的是n-1维数组类型;广义表的数据元素也可以是广义表。

2023-05-13

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

TA关注的人

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