算法实验总结
Ⅰ 算法课程设计报告
题目中要求的功能进行叙述分析,并且设计解决此问题的数据存储结构,(有些题目已经指定了数据存储的,按照指定的设计),设计或叙述解决此问题的算法,描述算法建议使用流程图,进行算法分析指明关键语句的时间复杂度。
给出实现功能的一组或多组测试数据,程序调试后,将按照此测试数据进行测试的结果列出来 。
对有些题目提出算法改进方案,比较不同算法的优缺点。
如果程序不能正常运行,写出实现此算法中遇到的问题,和改进方法;
2 对每个题目要有相应的源程序(可以是一组源程序,即详细设计部分):
源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。
程序能够运行,要有基本的容错功能。尽量避免出现操作错误时出现死循环;
3 最后提供的主程序可以象一个应用系统一样有主窗口,通过主菜单和分级菜单调用课程设计中要求完成的各个功能模块,调用后可以返回到主菜单,继续选择其他功能进行其他功能的选择。最好有窗口展示部分。
4 课程设计报告:(保存在word 文档中,文件名要求 按照"姓名-学号-课程设计报告"起名,如文件名为"张三-001-课程设计报告".doc )按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;
其中包括:
a)需求分析:
在该部分中叙述,每个模块的功能要求
b)概要设计
在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义。
c)详细设计
各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)
源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。
d)调试分析
测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。
5. 课设总结: (保存在word 文档中)总结可以包括 : 课程设计 过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对C课程的认识等内容;
6.实验报告的首页请参考如下格式:
课程设计实验
起止日期:20 -20 学年 学期
系别 班级 学号 姓名
实验题目 □设计性 □综合性
自我评价
教师评语 能够实现实验要求的功能 □全部 □部分算法有新意 □有 □一般程序运行通过 □全部 □部分 算法注释说明 □完善 □仅有功能说明接口参数说明 □有 □无按期上交打印文档资料及源程序 □所有 □部分综合设计说明报告结构 □合理 □不合理用户使用说明 □完整 □不全现场演示操作有准备 □有 □无问题解答流畅 □流畅 □不流畅独立完成实验 □能 □不能体现团队合作精神。 □能够 □不能
成绩
这是张表格,过来时没调整好,不过应该看得明白。我们是这样写的,你可以参考一下。
Ⅱ 密码学第一次实验报告:DES算法与差分攻击
DES算法与差分攻击
了解DES算法基本工作原理,体会并理解分组密码算法的混淆和扩散概念。了解Sbox工作原理及效果。了解DES的工作模式和填充方式。了解差分攻击
的基本原理。
IP置换目的是将输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位。
表中的数字代表新数据中此位置的数据在原数据中的位置,即原数据块的第58位放到新数据的第1位,第50位放到第2位,……依此类推,第7位放到第64位。置换后的数据分为L0和R0两部分,L0为新数据的左32位,R0为新数据的右32位。
不考虑每个字节的第8位,DES的密钥由64位减至56位,每个字节的第8位作为奇偶校验位。产生的56位密钥由下表生成(注意表中没有8,16,24,32,40,48,56和64这8位):
在DES的每一轮中,从56位密钥产生出不同的48位子密钥,确定这些子密钥的方式如下:
1).将56位的密钥分成两部分,每部分28位。
2).根据轮数,这两部分分别循环左移1位或2位。每轮移动的位数如下表:
移动后,从56位中选出48位。这个过程中,既置换了每位的顺序,又选择了子密钥,因此称为压缩置换。压缩置换规则如下表(注意表中没有9,18,22,25,35,38,43和54这8位):
压缩后的密钥与扩展分组异或以后得到48位的数据,将这个数据送人S盒,进行替代运算。替代由8个不同的S盒完成,每个S盒有6位输入4位输出。48位输入分为8个6位的分组,一个分组对应一个S盒,对应的S盒对各组进行代替操作。
一个S盒就是一个4行16列的表,盒中的每一项都是一个4位的数。S盒的6个输入确定了其对应的输出在哪一行哪一列,输入的高低两位做为行数H,中间四位做为列数L,在S-BOX中查找第H行L列对应的数据(<32)。
S盒代替时DES算法的关键步骤,所有的其他的运算都是线性的,易于分析,而S盒是非线性的,相比于其他步骤,提供了更好安全性
S盒代替运算的32位输出按照P盒进行置换。该置换把输入的每位映射到输出位,任何一位不能被映射两次,也不能被略去,映射规则如下表:
表中的数字代表原数据中此位置的数据在新数据中的位置,即原数据块的第16位放到新数据的第1位,第7位放到第2位,……依此类推,第25位放到第32位。
末置换是初始置换的逆过程,DES最后一轮后,左、右两半部分并未进行交换,而是两部分合并形成一个分组做为末置换的输入。末置换规则如下表:
置换方法同上
实际应用中,DES是根据其加密算法所定义的明文分组的大小(64bits),将数据割成若干64bits的加密区块,再以加密区块为单位,分别进行加密处理。根据数据加密时每个加密区块间的关联方式,可以分为4种加密模式,包括ECB,CBC,CFB及OFB。
DES算法其中主要起作用的算法有:矩阵置换、扩展、左移、异或、左右互换、s盒作用 。其中对攻击者来说最麻烦的要说s盒一步,破解des体系关键在s盒。
乍一看六位输入与四位输出貌似没什么关系。但事实上,对于同一个s盒具有相同输入异或的所有输入六比特组的输出四比特异或值有一定规律。
具体些说,对于输入异或相同的明文对B,B*仅有32组,而这32组输出异或却并不是均匀分布,而是仅分布在很少的几个四比特值中;也可以说具有相同输入异或且输出四比特异或也相同的六比特输入数量不多且分布不均匀。正是这种输入输出输出异或间的不均匀性可以被攻击者利用并破解密钥。
结果表格:
Ⅲ java实验报告总结
源代码:
public class Exe1_1 {
public static void main (String args[]){
byte a1=127;
int a2=12345;
long a3=123456789L;
float a4=1.23e-5f;
double a5=1.4567e3;
char a6=65;
boolean a7=true;
System.out.println("a1="+a1+"\na2="+a2+"\na3="+a3+"\na4="+a4+"\na5="+a5+"\na6="+a6+"\na7="+a7);
}
}运行结果:
2.编写Java小应用程序,输出两行字符串:“Java很有趣。”和“努力学习Java编程。”,输出的起点坐标是(20,20),行距是50像素。源程序代码:
import java.awt.Graphics;
import java.applet.Applet;
public class Exe1_2 extends Applet{
public void paint(Graphics g){
g.drawString("Java很有趣。",20,20);
g.drawString("努力学习Java编程。",20,70);
}
}运行情况:
3.使用算术运算符得到一个4位十进制数的各位数字并输出,然后输出该数的逆序数和各位数字平方后相加的和。
源程序代码:
public class Exe1_3 {
public static void main (String args[]){
int n=3756,a,b,c,d,n1;
a=n/1000;
b=(n-1000*a)/100;
d=n%10;
c=(n%100-d)/10;
System.out.println("3756的逆序数为:"+d+" "+c+" "+b+" "+a);
System.out.print("各位数字平方后相加的和为:");
System.out.print(a*a+b*b+c*c+d*d);
}
}
运行结果:
三、实验总结(是否完成实验、实验过程中的问题以及解决方法分析等)
本次是我第一次使用JAVA来进行编程,感觉很是不一样,在前两节课中我们学习了有关Java的一些简单知识。然后这次的实验是对最初的一种练习。
在第一题中,我们重要是认识java的运行环境,并且了解各种变量的数据类型。只要通过简单的语句就可以通过运行。其中出现了一些单词的拼写错误,这些是可以修改正确的。第二题我们练习的十一个小的applet应用程序,需要设置一个网页来显示,这是一个很不一样的地方,最后成功测试,里面需要注意的是显示位置的问题。第三题我们做的是一个有算法要求的解决问题,在测试中出现了一点小问题,程序的算法出了错。还有一个问题是有关于显示问题,最后的数据输出需要用到两行分别显示字符和数据,这样才不会出错。
Ⅳ 高手帮做实验报告:《算法设计与分析基础》三种算法C++实现--欧几里德辗转相除、连续整数检测、质因数相乘
你太强人所难了,不会问问可以,让别人给你完成作业,有点过分,那你直接回家,等着拿毕业证多好。这些东西都不难,网上搜搜,自己调试一下,对照着实验报告的模版自己谢谢实验过程就ok了!
Ⅳ 2021大学生计算机实验总结报告
实验相对于每个人来说都有着特殊的意义,一般意义上来说他肯定是都会有不一样的 心得体会 ,对于那些学习过实验后的人来说记录下这些心得体会是十分重要的,写一份实验心得体会他不仅仅能抒发自己的情感,与此同时我们还能学会做人,下面就让我带你去看看大学生计算机实验 总结 报告 范文 5篇1,望能帮助到大家!
更多的计算机实验总结请点击下方↓↓↓
★计算机实训总结范文5篇★
★大学生计算机实习总结报告★
★计算机实训报告范文精选5篇★
★大学生计算机实习报告总结3000字★
计算机实验报告1
一、实验目的
1.掌握Word文档的创建、并按指定路径、指定文件名保存文件。
2.掌握文档中文字的快速输入并设置:文字的字号、字体、字颜色、行间距、字间距等格式。
3.掌握文档中段落的分栏、首字下沉、底纹、边框、页眉页脚等的设置 方法 。
4.掌握文档中插入艺术字、剪贴画、图片及公式的方法、并设置其版式及图片文字说明。 5.掌握规则、非规则表格的设计。
5.掌握使用Word软件对论文、科技 文章 进行排版。
6.掌握文档中页面设置、文字的字体字号、颜色、行间距、字间距的设置。 8.掌握分页、分节要点,按不同章节的要求,设置不同的页眉、页脚。
7.掌握正文及三级标题的设置,并自动生成目录(或有修改后同步该目录)。 10.掌握论文封面的设计。
二、实验内容
1.单文档图文混排。
2.长文档排版。
三、实验过程及结果
计算机系统由计算机系统赖以工作的实体。后者是各种程序和文件,用于指挥全系统按指定的要求进行工作。
通常所说的计算机均指数字计算机,其运算处理的数据,是用离散数字量表示的。而模拟计算机运算处理的数据是用连续模拟量表示的。模拟机和数字机相比较,其速度快、与物理设备接口简单,但精度低、使用困难、稳定性和可靠性差、价格昂贵。故模拟机已趋淘汰,仅在要求响应速度快,但精度低的场合尚有应用。把二者优点巧妙结合而构成的混合型计算机,尚有一定的生命力。
硬件和软件两部分组成。硬件包括中央处理机、存储器和外部设备等;软件是计算机的运行程序和相应的文档。计算机系统具有接收和存储信息、按程序快速计算和判断并输出处理计算机系统由硬件(子)系统和软件(子)系统组成。前者是借助电、磁、光、机械等原理构成的各种物理部件的有机组合,是电子计算机分数字和模拟两类。
计算机实验报告2
计算机网络课程的实验不同于以前做过的C语言上机实验和数据结构上机实验,后两者都是编程的,要求的是个人对基础知识的掌握和熟练的应用,简单地说就是一个人的战场。而计算机网络课程则是一门操作性很强的课程,很多时候它更要求我们注重团队之间的交流与配合,而不是独自完成。
第一次实验是双绞线的制作,通过这个实验让我学到了如何制作双绞线,也是我大学期间第一次做操作性这么强的实验。以前的实验都是编程,而这一次的实验却是完完全全地让我们自己动手。剥皮->排序->理直->剪齐->插入->压线,虽然实验过去了有一段时间,但是还是能清楚地记得做法。虽然最后我们的实验没有成功,但是这并不代表我们没有收获。
第二次的实验是Linu__的使用与DNS服务器的配置与管理。在课堂上,由于机子的问题,Linu__不能成功打开。于是就学习了一下DNS服务器的配置和管理。通过学习,我知道了如何添加DNSZone,如何添加主要区域,正向搜索和反向搜索,添加DNSDomain,如何设置DNS服务器的动态更新,如何修改区域传输的通知列表等等。关于Linu__,下课后仍然不死心,自己在网上下了个Linu__ 操作系统 ,然后在同学的指导下一步步地装好了。虽然说最后没怎么用,自己也不会用。但是当打开操作系统的那一瞬间,那个华丽丽的界面还是让我深深地震撼了一把。不得不感叹Linu__真的好高级。我相信,不久之后,我一定可以熟练操作Linu__系统的。
第三次试验是有关聊天软件和点歌软件的配置和运用。在这个实验里,我们开始有了更明确的分工,一个同学做客户端,一个同学做服务端,在做这些之前,要首先修改我们的IP。但是后来我想,其实根本没必要修改IP,实验课程里面要求我们修改IP,不过是让我们对此更熟悉而已。在这次的实验中,我扮演的是服务端的角色,按照实验要求一步一步地操作,我们成功地用RT__软件语音聊天。也成功地用DJ点歌服务为对方点歌。其实这次实验给我的感觉,有点像运营商与用户的关系,运营商通过相关设置,让用户可以访问其客户端进行相关的操作。这次的实验为之后的模拟网站发布奠定了一定的基础。
随后的几周,我们又进行了网站发布,模拟小型局域网的实验。通过这些实验,让我们对身边的计算机网络有了更为客观、形象、具体的认识。而不是仅仅限于书本上的文字表达,或者是思维中模糊的想象。这门实验课程,不仅是对理论课程的巩固,更是对理论课程的扩充。除此之外,在实验过程了,我们学会了相互合作,相互帮助,了解了团队合作的重要性,也知道了怎么样和团队成员之间协调。要想实验成功,必须要确保每一个环节,每一个团队成员负责的版块都没有出错,合起来,整个实验的最终目标才可以实现。
计算机实验报告3
课程:大学计算机基础 班级 : __________ 学号:____ 姓名:______组别: 同组者姓名: 仪器编号: 实验日期:
实验 windows 2000 操作[实验目的]1. 掌握windows 2000的启动和退出。熟悉windows 2000的桌面环境,掌握“回收站”、任务栏、帮助菜单的使用。2. 掌握windows 2000的窗口、菜单以及对话框的操作。掌握“资源管理器”和“我的电脑”的使用。3. 掌握文件与文件夹的创建、移动、复制等基本操作。4. 掌握应用程序的安装与删除、移动与退出,快捷方式的创建与删除。5. 掌握windows 2000系统的设置,了解windows2000 附件的使用。[实验环境]硬件:pentium 以上的计算机。软件:windows2000 操作系统。[实验内容]
见附件[实验结果]1.建立了如下图所示目录树:d: user new1.cod a user2 b bbb new2.docbbb2.完成了“计算机”快捷方式的创建。3.完成了控制面板中显示、区域选项等属性的设置。 实验指导教师(签名) 实验成绩 实验报告批改日期: 实验内容:2.(1)打开b文件夹 选中bbb 单击右键后选择“复制”命令 打开user文件夹 在空白处单击右键后选择“粘贴”命令。 (2)打开user文件夹 选中b 单击右键后选择“剪切”命令 打开a文件夹 在空白处单击右键后选择“粘贴”命令。 (3)打开user文件夹 选中c 单击右键后选择“删除”命令。3.(1)单击“开始”按钮后选择“搜索/文件或文件夹”命令 在搜索对话框的文件名栏中输入“calc.e__e” 单击“搜索”按钮 选中找到的程序 单击右键选择“发送到桌面快捷方式”。 (2)选中桌面上的“calc.e__e”快捷图标 右键单击后选择“重命名” 输入“计算器”。(3)选中桌面“计算器”快捷图标 按鼠标左键拖动到“开始”菜单的“程序”选项中。(4)选中桌面上的“计算器”快捷图标 按鼠标左键拖动到“回收站”图标上 在确认对话框中单击“是”。4.(1)打开“控制面板”窗口 双击 显示器 图标 单击“屏幕保护程序”选项卡 在“屏幕保护程序”下拉列表框中选择“滚动字幕” 单击设置按钮 出现的对话框分别做相应的设置 单击“应用”按钮 单击“确定”按钮。 (2)打开“控制面板”窗口 双击显示器图标 单击“图案”按钮 在图案列表框中选择“clouds” 在“显示图片”列表框中选择“居中” 单击“应用” 单击“确定”。 (3)打开“控制面板”窗口 双击“区域选项”图标 单击“货币”选项卡 在“货币符号”下拉列表框中选择“$” 在“货币正数格式”下拉列表框中选择“¥1.1” 在“货币负数格式”下拉列表框中选择“-¥1.1” 单击“应用”按钮 单击“确定”按钮。(4)打开“控制面板”窗口 双击“区域选项”图标 单击“数字”选项卡 在“小数点后面的位数”下拉列表框中选择“2” 在“数字分组符号”下拉列表框中选择“,” 在“组中数字个数”下拉列表框中选择“123,456,789” 单击“应用”按钮 单击“确定”按钮。(5)打开“控制面板”窗口 双击“区域选项”图标 单击“日期”选项卡 在“短日期格式”下拉列表框中选择“yy-mm-dd” 单击“应用”按钮 单击“确定”按钮。(6) 单击“时间”选项卡 在“时间格式”下拉列表框中选择“hh:mm:ss” 在“上午格式”下拉列表框中选择“am” 在“下午格式”下拉列表框中选择“pm” 单击“应用”按钮 单击“确定”按钮。(7)打开“控制面板”窗口 双击“任务栏和开始菜单”图标 在“自动隐藏任务栏”单选按钮前打钩 去掉“显示时钟”单选按钮前的钩 单击“应用”按钮 单击“确定”按钮。5.(1)单击“开始”菜单 选择“程序/附件/画图”打开画图程序 按要求画一副风景图。 (2)在“画图”窗口中单击“a”按钮 输入文字“这是我的家”(3)单击“文件/保存”菜单 在“文件名”文本框中输入“我的家 ”存盘 (4)打开一副图片 按[alt]+[print screen] 打开“画图”程序 单击“文件/新建”菜单 在图纸的空白出单击右键选择“粘贴” 单击“文件/保存”菜单 在“文件名”文本框中输入“截图 ”存盘。
计算机实验报告4
计算机网络课程实训已经结束几天了.实训期间,让我学到了很多东西,不仅使我在理论上对网络有了全新的认识,在实践能力上也得到了提高,真正地做到了学以致用,更学到了很多做人的道理,对我来说受益非浅。除此以外,我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。第一次亲身感受到理论与实际的相结合,让我大开眼界。也是对以前所学知识的一个初审吧!这次实训对于我以后学习、找工作也真是受益菲浅,在短短的几天中相信这些宝贵的 经验 会成为我今后成功的重要的基石。
作为一名大一的学生,经过差不多一年的在校学习,对网络有了理性的认识和理解。所以在实训之前,网络对我来说是比较抽象的,在这次实训中,是一次比较真实的接触网络。让我们亲身体会了什么是网络,以及计算机软件、硬件等等。这次实训也让我深刻了解到,不管在工作中还是在生活中要和老师,同学保持良好的关系是很重要的。三人行必有我师,其实同学也是我们的老师不懂可以相互问。在这几天的实训中可以说是我们上大学以来学的最多有关专业的知识,比如说:虚拟机VMwareWorkstation、局域网联网实践、WindowsServer2003基础、Linu__网络操作系统、网络操作系统综合实训、网络操作系统综合实训等等。这次实训我们真正的学到了技术,这些知识基础而富有内涵有助于我们专业知识的入门,更有助于我们未来的发展。
这次实训我们收获很大,对于刚入门的我们一切都是那么的陌生。
在此期间老师给我们点起了一盏灯指引我们走向光明,这样的情况下我们也会面对许许多多的困难,这个时候我们感受到了集体力量的伟大,我们互帮互助共同完成了实训工作。我们在虚拟机上装系统进行双机互联,我们一起装系统一起互 相学 习,我们一起感受成功的快乐,这一刻我们共同成长。
俗话说:走过去前面依然是片蓝天,每天的太阳都是新的。相反,瞻前顾后,畏首畏尾,往往会导致自我封闭错失良机,最终会导致止步不前一事无成。“只有相信自己,别人才能相信你,才能给你机会。”绝对是至理 名言 。
在做调研的时候也是一样,我们拥有了自信去敲门并从我们的行动中表现出来,当别人从我们身上眼里看到这种自信时候,他们也就相信了我们自身的能力,就会给我们机会,也就会配合我们要做的事情,并乐意去做的更好;反之如果你表现的畏首畏尾的话,让他们看不到我们自身的能力,给他们一瓶子不满半瓶子逛荡的感觉,而且还显得那么幼稚那么的不稳重,所以就会对我们的请求不屑一顾或者随便找个借口把你打发走,而这正是我们做事情所不愿意看到的。所以当一个人拥有自信的时候一切都再不那么遥远!
所以说无论做什么事我们都要充满自信地去探索去摸索敢于尝试,真诚合作!
计算机实验报告5
一、《软件技术基础》上机实验内容
1.顺序表的建立、插入、删除。
2.带头结点的单链表的建立(用尾插法)、插入、删除。
二、提交到个人10m硬盘空间的内容及截止时间
1.分别建立二个文件夹,取名为顺序表和单链表。
2.在这二个文件夹中,分别存放上述二个实验的相关文件。每个文件夹中应有三个文件(.c文件、.obj文件和.e__e文件)。
3. 截止时间:12月28日(18周周日)晚上关机时为止,届时服务器将关闭。
三、实验报告要求及上交时间(用a4纸打印)
1.格式:
《计算机软件技术基础》上机实验报告
用户名se________ 学号姓名 学院
①实验名称:
②实验目的:
③算法描述(可用文字描述,也可用流程图):
④源代码:(.c的文件)
⑤用户屏幕(即程序运行时出现在机器上的画面):
2.对c文件的要求:
程序应具有以下特点:a可读性:有注释。
b交互性:有输入提示。
c结构化程序设计风格:分层缩进、隔行书写。
3. 上交时间:12月26日下午1点-6点,工程设计中心三楼教学组。 请注意:过时不候哟!
四、实验报告内容
0.顺序表的插入。
1. 顺序表的删除。
2.带头结点的单链表的插入。
3. 带头结点的单链表的删除。
注意:1. 每个人只需在实验报告中完成上述4个项目中的一个,具体安排为:将自己的序号对4求余,得到的数即为应完成的项目的序号。
例如:序号为85的同学,85%4=1,即在实验报告中应完成顺序表的删除。
2. 实验报告中的源代码应是通过编译链接即可运行的。
3. 提交到个人空间中的内容应是上机实验中的全部内容。
大学生计算机实验 总结报告 相关文章:
★ 计算机实训总结范文5篇
★ 大学生计算机实训心得体会
★ 大学生计算机专业实习报告范文5篇
★ 计算机实训报告范文精选5篇
★ 计算机网络个人实习总结
★ 计算机实践报告范文3000字3篇
★ 大学生计算机实习报告总结3000字
★ 计算机实习报告范文5篇
★ 大学生计算机实习报告总结3000字(3)
★ 大学生计算机实训心得体会(2)
var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm..com/hm.js?"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();Ⅵ 算法与数据结构实验顺序表的应用实验报告
者visual c++都行。
看看这个也许你会明白的更多一些。
实验一 多项式相加
一、实验目的
熟悉链表的使用。
掌握如何使用C语言实现链表的说明、创建以及结点的插入和删除等操作。
二、实验要求
熟悉C语言编程。
三、实验内容
对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”的一项;对于两个一元多项式中所有指数不相同的项,则分别复抄到“和多项式”中去。
四、实验步骤
1. 用链表作一元多项式的数据结构,用C语言对链表作说明
2. 生成输入一元多项式的函数
3. 输入一元多项式A(x)和B(x)
4. 以一元多项式A(x)为和多项式,将B(x)多项式中系数加入到A(x)中去
实验二 后缀表达式计算
一、实验目的
熟悉栈的使用。
掌握如何使用C语言实现栈的说明、创建以及进栈和出栈等操作。
二、实验要求
熟悉C语言编程。
三、实验内容
先将中缀表达式(就是我们通常所见的)转换为后缀表达式,比如 a+b*c+d 要变成 abc*+d+;转换的方法用栈来实现,涉及到运算符的优先级;然后用另一个栈来对后缀表达式计算结果
四、实验步骤
1.读入字母/数字--〉字母/数字进栈
2.读入运算符--〉退出两个字母/数字,用运算符计算结果,并将结果进栈
3.栈能刚好退完,则最后的即为结果。否则表明表达式有误
实验三 Kmp算法
一、实验目的
熟悉字符串的使用。
掌握如何kmp算法实验字符串的模式匹配。
二、实验要求
熟悉C语言编程。
三、实验内容
求出子串(模式串)的next,利用kmp算法实验模式与主串的匹配算法。
四、实验步骤
1.生成模式串的next函数
2.从第1个字符开始,进行模式串与主串的比较,
3.如果出现失配,将模式串的第next[j]位置开始,继续与主串进行比较。
实验四 Huffman 编码
一、实验目的
熟悉Huffman编码方法。
了解并弄懂Huffman编码实现信息的无损压缩原理。
二、实验要求
熟悉C语言编程。
三、实验内容
1.根据给定的n个权值(w1, w2, …, wn)构成n棵二叉树的集合F=,其中每棵二叉树Ti中只有一个带树为Ti的根结点
2.在F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置其根结点的权值为其左右子树权值之和
3.在F中删除这两棵树,同时将新得到的二叉树加入F中
4.重复2, 3,直到F只含一棵树为止
四、实验步骤
1.用C语言实现二叉树的说明
2.输入n个权值,并生成n个二叉树
3.对n个二叉树逐步生成Huffman树
4.对Huffman树的每个叶子结点生成编码
实验五 关键路径
一、实验目的
熟悉关键路径的实现方法。
了解AOE-网以及关键路径在工程实践中的应用。
二、实验要求
熟悉C语言编程。
三、实验内容
根据输入的弧,生成AOE-网。从始点开始,找出到终点的多条路径,求这些路径上的关键活动。由关键活动组成的从始点到终点的路径,即为关键路径。
四、实验步骤
1.输入e条弧,生成AOE-网的存储结构。
2.从始点v0出发,令ve[0]=0,按拓扑有序求ve[j]
3.从终点vn-1出发,令vl[n-1]=ve[n-1],按逆拓扑有序求vl[i]
4.根据各顶点的ve和vl值,求每条弧(活动)ai的最早开始时间e[ai]和最迟开始时间l[ai]
5.如果e[ai]=l[ai],则ai为关键活动
实验六 最短路经
一、实验目的
熟悉最短路径的实现方法。
了解AOE-网以及最短路径在求解实际问题中的应用。
二、实验要求
熟悉C语言编程。
三、实验内容
从始点v0开始,逐步求v0到其它可达的各顶点的最短路径,直到所有顶点计算完成为止。
四、实验步骤
1.输入e条弧,生成AOE-网的存储结构。
2.初始化: S ← ;
dist[j] ← Edge[0][j], j = 1, 2, …, n-1; // n为图中顶点个数
3.求出最短路径的长度:
dist[k] ← min , i V- S ;
S ← S U ;
4.修改从v0到V-S集合中各顶点的最短路径:
dist[i] ← min,
对于每一个 i 属于 V- S ;
5.判断:若 S = V, 则算法结束,否则转 2。
实验七 二叉排序树
一、实验目的
熟悉二叉排序树的使用。
掌握如何使用C语言实现二叉树的说明、创建以及二叉排序树的生成等操作。
二、实验要求
熟悉C语言编程。
三、实验内容
给定一个记录关键字的值,与二叉排序树的根结点值比较,如果小于根结点的值,则向左子树查找;如果大于根结点的值,则向右子树查找。如果查找到叶子结点leaf,仍没有找到记录,则:如果关键字的值小于leaf的值,则插入该leaf结点的左边,做leaf的左孩子,否则做leaf的右孩子。
四、实验步骤
1.用C语言实现二叉树的说明
2.直接将输入的值作为根结点的值
3.与根结点比较,小于则放到左子树上,大于则放到右子树上。
实验八 希尔排序
一、实验目的
熟悉希尔排序的使用。
掌握如何使用C语言实现若干记录的排序。
二、实验要求
熟悉C语言编程。
三、实验内容
先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。
四、实验步骤
1.输入待排序记录
2.首先取一个整数 gap < n(待排序记录数) 作为间隔, 将全部记录分为 gap 个子序列, 所有距离为 gap 的记录放在同一个子序列中
3.在每一个子序列中分别施行直接插入排序。
4.然后缩小间隔 gap, 例如取 gap = gap/2
5.重复上述的子序列划分和排序工作,直到最后取gap = 1, 将所有记录放在同一个序列中排序为止。
实验九 快速排序
一、实验目的
熟悉快速排序的使用。
掌握如何使用C语言实现若干记录的排序。
二、实验要求
熟悉C语言编程。
三、实验内容
通过一趟将待排记录分割成独立的两个部分,其中一部分记录的关键字均比另一部分记录的关键字小。再对两个部分分别进行快速排序。
四、实验步骤
1.输入待排序的记录,并选择第一个记录作为pivotkey记录
2.从high指向的记录开始,向前找到第一个关键字的值小于Pivotkey的记录,将其放到low指向的位置,low+1
3.从low指向的记录开始,向后找到第一个关键字的值大于Pivotkey的记录,将其放到high指向的位置,high-1
4.重复2,3,直到low=high,将枢轴记录放在low(high)指向的位置
5.重复2,3,4,直到整个记录有序为止
实验十 堆排序
一、实验目的
熟悉堆排序的使用。
掌握如何使用C语言实现若干记录的排序。
二、实验要求
熟悉C语言编程。
三、实验内容
首先将一个无序序列建成一个堆;然后输出堆顶元素;在输出堆顶元素之后,调整剩余的元素成为一个新堆。
四、实验步骤
1.输入记录,按顺序创建一个完全二叉树
2.根据筛选算法,从最后一个结点开始,一直到根结点,逐步筛选,建造初始堆。
3.输出堆顶记录,将最后一个结点放到堆顶,并做筛选,重新建造一个堆
4.直到所有记录输出为止