(1)输入字符序列,建立二叉链表。
(2)先序、中序、后序遍历二叉树:递归算法。
(3)中序遍历二叉树:非递归算法(最好也能实现先序,后序非递归算法)。
(4)求二叉树的高度。
(5)求二叉树的叶子个数。
(6)对于树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。
(8)借助队列实现二叉树的层次遍历。
(9)在主函数中设计一个简单的菜单,分别调试上述算法。
2024/9/16 7:26:37 88KB 二叉树
1
java编程含有界面以及完整代码〈程序〉→main()〈语句块〉〈语句块〉→{〈语句串〉}〈语句串〉→〈语句〉;
〈语句串〉|〈语句〉;
〈语句〉→〈赋值语句〉|〈条件语句〉|〈循环语句〉〈赋值语句〉→ID=〈表达式〉;〈条件语句〉→if〈条件〉〈语句块〉〈循环语句〉→while〈条件〉〈语句块〉〈条件〉→(〈表达式〉〈关系符〉〈表达式〉)〈表达式〉→〈表达式〉〈运算符〉〈表达式〉|(〈表达式〉)|ID|NUM〈运算符〉→+|-|*|/〈关系符〉→<|<=|>|>=|=|!>word.wordList包(存储了关键字):word:此类是定义了存储关键字的结构:包括String型的关键字,和int型的识别符。
wordList:此类存储了29个关键字,在构造函数中初始化。
2、word包(进行词法分析)中:basicFunction:此类定义了做词法分析的基本函数:GetChar()将下一输入字符读到ch中,搜索知识器前移一个字符位置GetBC();
检查ch中的字符是否为空白。
若是,则调用GetChar直至不是字符为止Concat();
将ch中的字符连接到strToken之后IsLetter();
判断ch中的字符是否为字母IsDigit();
判断ch中的字符是否为数字Reserve();
对strToken中的字符创查找保留字表,若是则返回它的编码,否则返回0Retract();
将搜索指示器回调一个字符位置RetractStr();
将strToken置空lexAnalysis:此类是用来进行词法分析,将分析后的单词存入word数组中,(注:在词法分析中,若是一串字母,则认为是ID,若是数字,则认为是NUM。
存储的时候识别符分别存ID与NUM的识别符,但是内容仍然是自己的内容)其中的wordAnalysis函数就是词法分析函数(具体实现请看后面的重要函数分析)3、stack包(定义栈)中:栈是通过链表来定义的,因此StringListElement:次类定义了链表的每一个节点StringStrack:此类定义了栈,其中有长度属性,有函数:Top();用来取得栈顶Push();
压栈Pop();
出栈4、sentence包(语法分析)中:juzi:定义了文法的句子的结构:key(左边部分)content[](右边推出的部分)lo(长度)grammar:存储了文法的27个关系式AnalysisFB:定义了分析表的存储结构AnalysisF:存储分析表SentenceAnalysis:语法分析JuProduction(wordw):此函数是用来判断在当前栈与输入串的情况下,用哪一个产生式,返回产生式在数组中的下标 若输入串的第一个字符与栈顶字符相同则表示可以规约,则返回-1;
若不能过用产生式,则返回-2;
AnalysisBasic(wordw):此函数是分布进行语法分析,对栈操作 *根据所需要的产生式对符号栈进行操作 *返回0表示规约;
返回1表示移进;
否则表示输入串不是文法的句子5.Main包(主界面)中Main:此类定义了图形界面
2024/4/19 1:25:48 3.25MB 词法分析器及语法分析器
1
表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。
设计一个程序,演示用算符优先法对算术表达式求值的过程。
基本要求:以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。
利用教科书表3.1给出的算符优先关系,实现对算术四则混合运算表达式的求值,并仿照教科书的例3-1演示在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。
测试数据:3*(7-2);8;1+2+3+4;(((6+6)*6+3)*2+6)*2;(20+2)*(6/2);
2024/3/25 20:06:28 3KB 算术表达式求值
1
8位的S-DES加密解密系统,通过输入字符,然后经过加密后输出密文字符。
同时也可以输入密文解密出明文。
这个是我们密码学的作业我自己写的并且测试了,没有程序模块没有错误
2024/3/21 17:52:10 1.33MB s_des8位10位主密钥 加密解密
1
华中科技大学汇编实验源代码及实验报告2.1任务1.《80X86汇编语言程序设计》教材中P31的1.14题。
要求:(1)直接在TD中输入指令,完成两个数的求和、求差的功能。
求和/差后的结果放在(AH)中。
(2)请事先指出执行指令后(AH)、标志位SF、OF、CF、ZF的内容。
(3)记录上机执行后的结果,与(2)中对应的内容比较。
(4)求差运算中,若将A、B视为有符号数,且A>B,标志位有何特点?若将A、B视为无符号数,且A>B,标志位又有何特点?2.2任务2.《80X86汇编语言程序设计》教材中P45的2.3题。
要求:(1)分别记录执行到“MOVCX,10”和“INT21H”之前的(BX),(BP),(SI),(DI)各是多少。
(2)记录程序执行到退出之前数据段开始40个字节的内容,指出程序运行结果是否与设想的一致。
(3)在标号LOPA前加上一段程序,实现新的功能:先显示提示信息“Pressanykeytobegin!”,然后,在按了一个键之后继续执行LOPA处的程序。
2.3任务3.《80X86汇编语言程序设计》教材中P45的2.4题的改写。
要求:(1)实现的功能不变,对数据段中变量访问时所用到的寻址方式中的寄存器改成32位寄存器。
(2)内存单元中数据的访问采用变址寻址方式。
(3)记录程序执行到退出之前数据段开始40个字节的内容,检查程序运行结果是否与设想的一致。
(4)在TD代码窗口中观察并记录机器指令代码在内存中的存放形式,并与TD中提供的反汇编语句及自己编写的源程序语句进行对照,也与任务2做对比。
(相似语句记录一条即可,重点理解机器码与汇编语句的对应关系,尤其注意操作数寻址方式的形式)。
(5)观察连续存放的二进制串在反汇编成汇编语言语句时,从不同字节位置开始反汇编,结果怎样?理解IP/EIP指明指令起始位置的重要性。
2.4设计实现一个学生成绩查询的程序。
1、实验背景在以BUF为首址的字节数据存储区中,存放着n个学生的课程成绩表(百分制),每个学生的相关信息包括:姓名(占10个字节,结束符为数值0),语文成绩(1个字节),数学成绩(1个字节),英语成绩(1个字节),平均成绩(1个字节)。
2、功能一:提示并输入待查询成绩的学生姓名(1)使用9号DOS系统功能调用,提示用户输入学生姓名。
(2)使用10号DOS系统功能调用,输入学生姓名。
输入的姓名字符串放在以in_name为首址的存储区中。
(3)若只是输入了回车,则回到“(1)”处重新提示与输入;
若仅仅输入字符q,则程序退出,否则,准备进入下一步处理。
3、功能二:以学生姓名查询有无该学生(1)使用循环程序结构,在成绩表中查找该学生。
(2)若未找到,就提示用户该学生不存在,并回到“功能一(1)”的位置,提示并重新输入姓名。
(3)若找到,则将该学生课程成绩表的起始偏移地址保存到POIN字变量中。
4、功能三:计算所有学生的平均成绩使用算数运算相关指令计算并保存每一个学生的平均成绩。
平均成绩计算公式:(A*2+B+C/2)/3.5,即将语文成绩A乘以权重2、英语成绩C除以权重2后,与数学成绩B一起求和,再计算该生的平均成绩。
要求避免溢出。
5、功能四:将功能二查到的学生的平均成绩进行等级判断,并显示判断结果。
(1)平均成绩等级显示方式:若平均成绩大于等于90分,显示“A”;
大于等于80分,显示“B”;
大于等于70分,显示“C”;
大于等于60分,显示“D”;
小于60分,显示“F”。
提示:使用分支程序结构,采用2号DOS系统功能调用显示结果。
(2)使用转移指令回到“功能一(1)”处(提示并输入姓名)
2023/11/8 19:29:41 282KB 汇编
1
中山大学操作系统实验课实验1Myos作为引导,键入A执行程序A,显示200个A之后退回Myos,清屏后进行重新选择,键入B执行程序B,显示200个B第三个程序是显示一个菱形且上下运动5个来回四、程序设计在myos显示字符之前进行清屏,显示字符后加入键入选择模块和跳转模块,其中第二个程序的跳转中将cl置为3,将第二段程序的bin文件放入虚拟软盘的第三个扇区,也就是400h开始。
在原有的stoneM代码里面添加loop循环指令和跳转模块回跳到myos第三个程序(b.asm)是在stoneM基础上把显示的字符改成B,并且换掉字符颜色。
第四个是编写的新的程序(try.asm),显示出一个菱形并且用10h中断的06号功能上滚和07号功能下滚让它上下运动,并且设置循环让他运动五个来回。
之后输入字符‘m’退出程序回到引导程序。
2023/11/6 9:33:49 513KB os
1
文本处理是现代化计算机应用的重要领域。
文本由字符组成,字符以某种编码形式存储在计算机中。
每个字符的编码可以是相等长度的,也可以是不等长度的。
我们熟知的ASCII编码是等长编码。
为了提高存储和处理文本的效率,在一些计算机应用场合,如数据通信,常采用不等长的编码,对常用的字符用较少的码位编码,不常出现的字符用较多的码位编码,从而减少文本的存储长度。
哈夫曼编码就是用于此目的的不等长编码方法。
当然,编码的对面就有译码。
本课题中,首先是构造哈夫曼树。
给定一组权值,以此作为叶结点的权值,可以构造多棵扩充二叉树,它们通常具有不同的加权路径长度。
其中具有最小加权路径长度的扩充二叉树,用于构造高效的不等长编码。
哈夫曼给出了构造具有最小加权路径长度的扩充二叉树的算法,称位哈夫曼算法。
用哈夫曼算法构造的扩充二叉树称为哈夫曼编码树或哈夫曼树。
当然,还有编码和译码部分。
本系统的前端开发工具是VisualC++6.0。
具有输入字符集大小及权值大小,构造哈夫曼树,并对用户输入的字符串进行编码以及译码还有退出四种功能。
本程序经过测试后,功能均能实现,运行稳定。
2023/11/3 6:12:14 2.52MB 哈夫曼树,编码,译码,权值
1
程序可以实现,鼠标框选目标之后,跟踪所选目标操作过程:1:运行程序2:选定方式,例如输入1.选定视频流3:选中视频显示框4:输入字符p5:鼠标框选区域6:输入字符p,实现跟踪
2023/8/6 17:48:12 4.93MB KCFdemo
1
方案一个哈夫曼编码/译码体系,对于字符串举行编码以及译码底子申请:⚫从文件中读取一篇英文文档(文本文件1),统计文档中各个字符涌现的次数;
⚫以各个字符涌现的次数(或者概率)为叶子结点的权值结构一棵哈夫曼树,并为每一个叶子结点结构哈夫曼编码;
⚫输入每一个叶子结点的哈夫曼编码;
⚫盘算并输入字符的平均编码长度(准确到小数点后两位)。
⚫将该英文文档内容转换成对于应的电文编码,并留存在一个文本文件2中。
⚫将上一步患上到的文件中的电文编码,复原为原有的英文内容,并再留存在一个文本文件3中;
⚫比力文件1以及文件2能否残缺不并吞输入。
2023/4/20 6:58:35 96KB 数据结构 C C++
1
简约高效,利用全局键盘钩子监听键盘输入,在钩子回调函数中利用时间差判断输入字符的连续性来区别扫描枪输入,相关文章在本人博客
2023/3/20 16:15:21 55KB 键盘钩子
1
共 16 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡