实验六 查找的操作
操作系统实验报告6

操作系统实验报告6一、实验目的本次操作系统实验的主要目的是深入了解和掌握操作系统中进程管理、内存管理、文件系统等核心概念和相关技术,通过实际操作和观察,增强对操作系统工作原理的理解,并提高解决实际问题的能力。
二、实验环境本次实验使用的操作系统为 Windows 10,实验工具包括 Visual Studio 2019 等。
三、实验内容(一)进程管理实验1、创建多个进程,并观察它们的运行状态和资源占用情况。
通过编写简单的C++程序,使用Windows API 函数创建多个进程。
在程序中,设置不同的进程优先级和执行时间,观察操作系统如何调度这些进程,以及它们对 CPU 使用率和内存的影响。
2、进程间通信实现了进程间的管道通信和消息传递。
通过创建管道,让两个进程能够相互交换数据。
同时,还使用了 Windows 的消息机制,使进程之间能够发送和接收特定的消息。
(二)内存管理实验1、内存分配与释放使用 C++的动态内存分配函数(如`malloc` 和`free`),在程序运行时动态申请和释放内存。
观察内存使用情况,了解内存碎片的产生和处理。
2、虚拟内存管理研究了 Windows 操作系统的虚拟内存机制,通过查看系统的性能监视器,观察虚拟内存的使用情况,包括页面文件的大小和读写次数。
(三)文件系统实验1、文件操作进行了文件的创建、读取、写入、删除等基本操作。
通过编写程序,对不同类型的文件(如文本文件、二进制文件)进行处理,了解文件系统的工作原理。
2、目录操作实现了目录的创建、删除、遍历等功能。
了解了目录结构在文件系统中的组织方式和管理方法。
四、实验步骤(一)进程管理实验步骤1、打开 Visual Studio 2019,创建一个新的 C++控制台项目。
2、在项目中编写代码,使用`CreateProcess` 函数创建多个进程,并设置它们的优先级和执行时间。
3、编译并运行程序,通过任务管理器观察进程的运行状态和资源占用情况。
计算机信息检索实验报告(6个)

实验一网上中文搜索引擎及其使用一、实验心得在电脑已经成为生活必备品的现在,日常搜索是一件很平常的事情。
俗话说,天天百度知识丰富。
当然,我国国内主要的搜索引擎除了百度,还有谷歌、雅虎、搜狗、网易、新浪。
一般来说,百度和谷歌是最多人用的。
不同的搜索引擎,不同的搜索方法,得到搜索结果的速度和准确度也不一样。
所以我觉得学习计算机信息检索的主要目的就是更好地提高自己搜索的速度和准确度。
在这次实验当中,我们主要学习和掌握以下搜索技巧的运用。
「“”」的基本用法、「+」或「空格」的基本用法、「+」的基本用法、「-」的基本用法、「OR」的基本用法、「site」的基本用法、「inurl」的基本用法、「intitle」的基本用法、「filetype」的基本用法。
比起以前直接把整个问题打上去然后从网页中寻找满意的答案,灵活使用这些搜索技巧可以更快地找到准确率高的答案。
这些技巧在现实生活中具有高度的可操作性和便捷性。
二、实验结果(一)请使用Google或百度搜索引擎完成以下知识测验:(请将检索结果复制到题干之后,并把所有有关的网页都下载到你的作业文件夹中,以作为本作业评分的依据。
)1.谁根据小仲马的《茶花女》改编了同名歌剧( B )/b/7602599.htmlA.奥斯汀 B.威尔第 C.福楼拜2."生存还是死亡,这是一个问题。
"出自莎士比亚的哪部作品?( A )/question/25934693.htmlA.《哈姆雷特》 B.《李尔王》 C.《麦克白》3."侦探福尔摩斯"第一次出现是在下列哪部作品中: ( A )/question/1306083005651.htmlA.《血字的研究》B.《东方快车谋杀案》C.《尼罗河上的惨案》D.《难逃一生》4.李清照词中名句"寻寻觅觅,冷冷清清,凄凄惨惨戚戚"的词牌名是: ( D ) /wenda/thread?tid=7c29ad4f072df739&hl=cnA.醉花阴B.一剪梅C.如梦令D.声声慢(二)请在网上寻找如下列图片。
管理信息系统实验六WiseCRM实验指导

1 客户与联系人管理1.1 客户管理(1)增加客户单击“客户管理”中“客户”按钮,进入该界面,进行增加记录的操作。
一个客户一般是一个公司,一个公司可以有多个联系人。
(2)删除客户(3)查找客户在“客户”界面上方“查询条件”框内选择要查找的字段,进行查询。
(4)浏览客户信息进入“客户列表”进行操作。
(5)修改客户信息1.2 联系人管理(1)增加联系人单击“客户管理”中“联系人”按钮,进入该界面,单击“增加记录”,添加联系人,多个联系人可属于同一个客户。
(2)删除联系人(3)查找联系人在“联系人”界面上方“查询条件”框内选择要查找的字段,进行查询。
(4)浏览联系人信息(5)修改联系人信息1.3 分组管理(1)增加组单击“分组”按钮进入该界面。
单击鼠标右键,选择“新建组”增加一个组。
(2)删除组(3)修改组信息用右键操作可以进行组名修改。
(4)添加/删除组成员2 业务活动管理2.1 日程安排及活动历史(1)增加活动单击“行动管理”中“日历”按钮,进入该界面,单击鼠标右键,选择“新建联系活动”。
(2)删除活动安排(3)修改联系活动(4)联系活动列表联系活动列表在3个地方显示:主界面单击“联系活动”按钮,进入“联系活动”界面显示列表。
主界面单击“客户”按钮,在该界面中“联系活动”子窗口显示列表。
主界面单击“联系人”按钮,在该界面中“联系活动”子窗口显示列表。
(5)浏览活动安排单击“行动管理”中“日历”按钮,进入该界面,通过“切换日历视图”可显示活动安排。
(6)结束活动(转为历史)在“日历”界面选中一个活动,单击鼠标右键选择“结束联系活动”。
(7)增加(编辑)日记/附件在主界面单击“联系人”或“客户”按钮,进入界面,单击“历史记录”子窗口,在子窗口内单击鼠标右键,选择弹出菜单的“新建日记”或“新建附件”完成操作。
2.2 机会管理(1)增加及修改机会记录进入“销售管理”的“机会”界面,单击鼠标右键选择“新建机会”。
实验室6S管理实施细则

实验室6S管理实施细则一、引言实验室6S管理是一种提高工作效率和安全性的管理方法,通过整理、整顿、清扫、清洁、素质和纪律的六个步骤,实现实验室环境的规范化和标准化。
本文旨在制定实验室6S管理的具体细则,以确保实验室的安全、卫生和高效运作。
二、整理(Seiri)1. 定期检查实验室内的设备、工具和材料,清理和清除再也不使用或者过期的物品。
2. 为每一个物品指定固定的存放位置,并进行标识,方便查找和归还。
3. 制定物品的分类和归档规则,确保实验室内的物品有序罗列。
三、整顿(Seiton)1. 对实验室内的设备和工具进行布局规划,使其便于使用和存放。
2. 为每一个设备和工具配备专用的存放架或者柜,确保其易于取用和放回。
3. 制定规范的操作流程和标识,以减少操作错误和提高工作效率。
四、清扫(Seiso)1. 制定清洁计划,明确每一个区域的清洁责任和频率。
2. 定期清洁实验室内的地面、墙壁、设备和工具,保持整洁和卫生。
3. 建立清洁检查制度,定期检查清洁情况,并及时整改不合格项。
五、清洁(Seiketsu)1. 制定实验室环境卫生和个人卫生的标准,包括穿戴、洗手、消毒等方面。
2. 提供必要的个人防护用品,并定期检查和更换。
3. 定期开展实验室环境的卫生培训和宣传,提高员工的卫生意识和素质。
六、素质(Shitsuke)1. 建立实验室员工的行为规范,包括工作纪律、礼仪规范等方面。
2. 定期开展员工培训和考核,提高员工的技能和素质。
3. 建立奖惩机制,激励员工积极参预6S管理,并惩罚违反规定的行为。
七、总结实验室6S管理的实施细则对于提高实验室的工作效率、安全性和卫生水平具有重要意义。
通过整理、整顿、清扫、清洁、素质和纪律的六个步骤,实验室的环境将得到规范化和标准化,员工的工作素质和纪律性也将得到提高。
我们将持续改进和完善实验室6S管理细则,以适应实验室工作的需求,并为实验室的发展提供有力的支持。
实验六、抗菌药物的体外药效试验

实验六、抗菌药物的体外药效试验(药敏试验)各种病原菌对抗菌药物的敏感性不同,同种细菌的不同菌株对同一药物的敏感性有差异,检测细菌对抗菌药物的敏感性,可筛选最有疗效的药物,用于临床对控制细菌性传染病的流行至关重要。
此外,通过药物敏感试验可为新抗菌药物的筛选提供依据。
药敏试验的方法很多,普遍使用的有滤纸片扩散试验(Kirby —Baueer Dice Diffusion);最低抑菌浓度试验(Minimum Inhibitory Concentration,MIC)和最低杀菌浓度试验(Minimum Bactericidal Concentration, MBC).[目的要求]1、熟悉体外抗菌试验操作技术。
2、掌握药物抗菌能力体外测定的常用方法及其用途.[实验原理]常用的体外测定药物抑菌能力的方法有两大类:琼脂渗透法与浓度系列稀释法.琼脂渗透法时利用药物能够渗透至琼脂培养基的性能,将实验菌混入琼脂培养基后倾注成平板;或将试验菌均匀涂于琼脂平板的表面,然后用不同的方法将药物置于已含试验菌的琼脂平板上。
根据加药的操作方法不同而有滤纸片法、打洞法、管碟法及挖沟法等。
经适宜温度培养后观察药物的抑菌能力.浓度系列稀释法时把药物稀释成不同的系列浓度,混入培养基内,加入一定量的试验菌,经适宜温度培养后观察结果,求得药物的最低抑菌浓度(MIC).1、细菌:所用细菌应包括主要致病菌。
革兰氏阳性球菌包括金黄色葡萄球菌(产酶与不产酶菌株)、表皮葡萄球菌,链球菌、肠球菌等。
革兰氏阴性球菌如淋球菌等。
革兰氏阴性杆菌包括流感杆菌、肠杆菌科细菌8~10种,绿脓杆菌与其它假单孢菌属及不动杆菌属等,厌氧菌包括脆弱类杆菌、消化球菌和消化链球菌等.对临床应用有代表性的菌株数量,创新药应不小于1000株。
其它类新药根据新药抗菌谱宽窄可作200—500株。
试验时应包括有国际公认质控菌株(如金葡菌ATCC25925,大肠杆菌ATCC25922和绿脓杆菌ATCC27853等)。
操作系统实验六

实验六时间片轮转调度一、实验目的·调试EOS 的线程调度程序,熟悉基于优先级的抢先式调度。
·为EOS 添加时间片轮转调度,了解其它常用的调度算法。
二、实验内容1、执行了实验指导书3.2的步骤,学习了“rr”命令是如何测试时间片轮转调度的。
算法实现原理是,按进程到达顺序(FCFS 原则)将进程依次加入就绪队列当中,然后将CPU 分配给位于队首的进程,确定一个时间片,让该进程执行一个时间片。
当该进程执行时间到时,该进程可能已经执行完毕(可能在时间片未到时就以及执行完毕),或者未执行完毕,如果是前者只需将进程弹出队列即可,如果是后者则将该进程加入队尾,并将CPU 分配给新的队首进程,如此循环。
在没有时间片轮转调度时的执行结果如下图所示。
2、执行了实验指导书3.3的步骤,对EOS 的线程调度程序PspSelectNextThread 函数进行调试,学习了就绪队列、就绪位图以及线程的优先级是如何在线程调度程序中协同工作的。
调试当前线程不被抢先的情况:基于优先级的抢先式调度算法,新建的第0 个线程会一直运行,而不会被其它同优先级的新建线程或者低优先级的线程抢先。
通过调试可以观察到“rr”命令新建的第0 个线程始终处于运行状态,而不会被其它具有相同优先级的线程抢先。
对在EOS 内核中实现这种调度算法进行调试,刷新“就绪线程队列”窗口,观察到如下图结果。
在“监视”窗口中添加表达式“/t PspReadyBitmap”,以二进制格式查看就绪位图变量的值,此时就绪位图的值为100000001,表示优先级为8 和0 的两个就绪队列中存在就绪线程。
在“快速监视”对话框的“表达式”中输入表达式“*PspCurrentThread”,查看当前正在运行的线程(即被中断的线程)的线程控制块中各个域的值。
通过以上调试线程调度函数PspSelectNextThread 的执行过程,“rr”命令新建的第0个线程在执行线程调度时没有被抢先的原因可以归纳为两点:(1) 第0个线程仍然处于“运行”状态;(2) 没有比其优先级更高的处于就绪状态的线程。
实验六旋光性溶液浓度的测定
实验六 旋光性溶液浓度的测定【实验目的】1.观察光的偏振现象,加深对光的偏振性认识,验证马吕斯定律。
2.了解旋光仪的结构原理,学习测定旋光性溶液的旋光率和浓度的方法.。
【实验原理】1、偏振光的基本概念光波是一种特定频率范围内的电磁波.由于引起视觉和光化学反应的是电场强度E ,所以E 矢量又称为光矢量,我们把E 的振动称为光振动,E 与光波传播方向之间组成的平面叫振动面.在垂直于光传播方向的平面内,如果光矢量E 只沿一个固定方向振动,这种光称为线偏振光,简称偏振光[见图1(a )].普通光源发射的光是由大量原子或分子辐射而产生,单个原子或分子辐射的光是偏振的,但由于热运动和辐射的随机性,大量原子或分子所发射的光的光矢量出现在各个方向的概率是相同的,没有哪个方向的光振动占优势,这种光源发射的光不显现偏振的性质,称为自然光[见图1(b )].还有一种光线,光矢量在某个特定方向上出现的概率比较大,也就是光振动在某一方向上较强,这样的光称为部分偏振光[见图1(c )].二、偏振光的获得和检测将自然光变成偏振光的过程称为起偏,起偏的装置称为起偏器.常用的起偏器有人工制造的偏振片、晶体起偏器和利用反射或多次透射(光的入射角为布儒斯特角)而获得偏振光.自然光通过偏振片后,所形成偏振光的光矢量方向与偏振片的偏振化方向(或称透光轴)一致.在偏振片上用符号“ ”表示其偏振化方向.鉴别光的偏振状态的过程称为检偏,检偏的装置称为检偏器.实际上起偏器也就是检偏器,两者是一样的.自然光通过作为起偏器的偏振片以后,变成光强为0E 的偏振光,偏振光通过作为检偏器的偏振片后,其光强E 可根据马吕斯定律确定:20cos E E θ= (1) 式中θ为起偏器和检偏器偏振化方向之间的夹角。
显然,当以光线传播方向为轴转动检偏器时,光强将发生周期性变化.当0θ= 时,光强最大;当90θ=时,光强为极小值(消光状态),接近全暗;当090θ<< 时,光强介于最大值和最小值之间.但同样对自然光转动检偏器时,就不会发生上述现象,光强不变.对部分偏振光转动检偏器时,光强有变化但没有消光状态.因此根据光强的变化,就可以区分偏振光、自然光和部分偏振光.三、旋光现象线偏振光通过某些物质的溶液后,偏振光的振动面将旋转一定的角度,这种现象称为旋光现象,旋转的角度称为该物质的旋光度。
(整理)实验六果蝇唾液腺染色体的观察及制备
专业班级:09生物技术2班学号:20091052237 姓名:赵丽同组人:龙雨跃实验日期:2011年10月11日室温:21.7℃大气压:83.4KPa实验五果蝇唾液腺染色体的观察及制备一.目的1.了解果蝇唾液腺染色体的形态学及遗传学特征。
2.习分离果蝇幼虫唾液腺的技术。
3.掌握唾液腺染色体制片方法。
二、原理蝇、摇蚊幼虫唾液腺细胞中的巨大染色体。
双翅目昆虫的唾液腺细胞发育到一定阶段之后就不再进行有丝分裂,而永久停留在分裂间期。
但随着幼虫的生长,唾液腺染色体仍不断地进行自我复制而且不分开,经过许多次的复制形成约1 000—4 000拷贝的染色体丝,合起来直径达5μm,长度达400μm,比普通细胞中期染色体约大100~150倍,所以又称为多线染色体(polytene chromosome)或巨大染色体(giant chromosome)。
唾液腺染色体的另一特点是体细胞中同源染色体处于紧密配对状态,这种状态称为“体细胞联会”。
在以后不断的复制中仍不分开,由此成千上万条核蛋白纤维丝唾液腺染色体(salivary gland chromosome)是一类存在于双翅目昆虫,如果结合在一起,紧密盘绕。
所以细胞中染色体只呈单倍数。
黑腹果蝇的染色体数目2n=8其中第Ⅱ、第Ⅲ染色体为中部着丝粒染色体,第Ⅳ染色体和第IX染色体为端着丝粒染色体。
唾液腺染色体形成时,染色体着丝粒和近着丝粒的异染色质区聚于一起形成一个染色中心(chromo-center),所以在光学显微镜下可见从染色中心处伸出6条配对的染色体臂,其中5条为长臂,l条为紧靠染色中心的很短的臂。
唾液腺染色体经染色后,呈现深浅不同,疏密各异的横纹(band)。
这些横纹的数目,位置,宽窄及排列顺序都具有物种的特异性。
研究认为这些横纹与染色体的基因是有一定关系的。
通过一定的实验方法使果蝇唾液腺染色体各臂分散开,并且使带纹、膨突等特征不受杂质影响清晰地显示出来,是进行果蝇遗传学研究的很重要的一个环节.果蝇唾液腺染色体在不同种间的共同点是染色体的着丝点位于一个染色区域,但不同的种类往往其染色体臂数目不同.每条染色体臂上分布着染色深浅不同、粗细各异的磺纹(band),这些横纹的宽窄疏密程度以及排列顺序和数目又都有种的特异性和种内的差异.由此,果蝇唾液腺染色体近几十年来,已广泛用于种内系统发生和种间亲缘关系的研究中,因为种间及种内不同品系和近缘种中的遗传差异经常反映在唾液腺染色体的不联会、形成泡(puff)、缢虞(constriction)和间带区的伸缩性以及顶体(telomere)的形态等多方面的差异,而特别重要的是研究它的基因序列的差异(观察是否产生了例位以及染色体的断裂、融合和重排).因此,无论从细胞遗传学的角度研究基因与突变性状之间的联系,还是从进化遗传遗传学方面研究染色体的系统发生,探讨种间以及近缘种间的遗传差异和生殖隔离的机制等,唾液腺染色体的分析研究都是十分重要的.从其横纹分布特征可对物种的进化特征进行比较分析,而一旦染色体上发生了缺失,重复,倒位。
实验六序列相似性的比对和搜索
实验六序列相似性的比对和搜索一、实验目的1.能够熟练使用NCBI网站的BLAST系列工具,通过NCBI中的BLAST功能,对所提供的基因组序列或蛋白质序列进行相似性比对,找到在GenBank中与之相似的序列,推测所比对序列的功能。
2.能够熟练掌握用Clustalx软件进行双序列和多序列比对。
3.学会使用EMBL上的Clustalw工具进行比对。
二、实验内容及操作步骤(一)BLAST的使用1.Blastn:进入NCBI主页下载关于AY125911、AF513548、AF525146、AF492473、AY497910、AY497911等核酸序列或其它你感兴趣的核酸序列(Fasta格式)。
1)进入/BLAST/;2)选择Nucleotide→Nucleotide-nucleotide BLAST (blastn)进行核酸相似性数据库搜索;3)在search对话框中粘贴入下载的相关核酸序列(Fasta格式);4)调整各参数值,直到获得最佳比对;5)点击进行比对;6)点击Format!对结果进行格式化,可在下面的选项中自行设计结果的显示方式;7)查看比对结果,看在数据库中找到的序列与你的序列是否相似或相同。
2.Blastp:进入NCBI主页下载某一蛋白质序列(Fasta格式),如cytochrome oxidase, peroxidase, SOD (Superoxide Dimutase)。
1)选择Protein→Protein-protein BLAST (blastp)进行蛋白质相似性数据库搜索;2)在search对话框中粘贴入下载的蛋白质序列(Fasta格式);3)调整各参数值,直到获得最佳比对;4)点击进行比对;5)点击Format!对结果进行格式化,可自行设计结果的显示方式;6)查看比对结果,看在数据库中找到的序列与你的序列是否相似或相同。
3.Bl2seq:进入NCBI主页下载某两条核酸或蛋白质序列(Fasta格式)1)进入/BLAST/;2)点击Special目录下的Align two sequences (bl2seq);3)将两条序列分别输入Sequence 1和Sequence 1区域;4)点Align进行比对;5)根据结果查看bl2seq是否允许插入空位。
实验6甲基丙烯酸甲酯的本体聚合
实验六甲基丙烯酸甲酯的本体聚合一、目的要求:1、了解本体聚合的原理,2、熟悉有机玻璃的制备方法。
二、原理:聚甲基丙烯酸甲酯(PMMA),俗称有机玻璃。
有机玻璃广泛用在工业、农业、军事、生活等的各个领域,如飞机、汽车的透明窗玻璃、罩盖等。
在建筑、电气、医疗卫生、机电等行业也广泛使用,如制造光学仪器、电器、医疗器械、透明模型、装饰品、广告铭牌等。
每年全世界要消耗数以百万吨的有机玻璃及其制品。
工业上制备有机玻璃主要采用本体、悬浮聚合法,其次是溶液和乳液法。
而有机玻璃的板、棒、管材制品通常都用本体浇铸聚合的方法来制备。
如果直接做甲基丙烯酸甲酯的本体聚合,则由于发热而产生气体只能得到有气泡的聚合物。
如果选用其它聚合方法(如悬浮聚合等)由于杂质的引入,产品的透明度都远不及本体聚合方法。
因此,工业上或实验室目前多采用浇注方法。
即:将本体聚合迅速进行到某种程度(转化率10% 左右)做成单体中溶有聚合物的粘稠溶液(预聚物)后,再将其注入模具中,在低温下缓慢聚合使转化率达到 93 ~ 95% 左右,最后在 100 ℃下聚合至反应完全。
其反应方程式如下:甲基丙烯酸甲酯在过氧化苯甲酰引发剂存在下进行如下聚合反应:本实验采用本体聚合法制备有机玻璃。
本体聚合是在没有介质存在的情况下只有单体本身在引发剂或光、热等作用下进行的聚合,又称块状聚合。
体系中可以加引发剂,也可以不加引发剂。
按照聚合物在单体中的溶解情况,可以分为均相聚合和多相聚合两种:聚合物溶于单体,为均相聚合,如甲基丙烯酸甲酯,苯乙烯等的聚合;聚合物不溶于单体,则为多相聚合,如氯乙烯,丙烯腈的聚合。
本体聚合的产物纯度高、工序及后处理简单,但随着聚合的进行,转化率提高,体系黏度增加,聚合热难以散发,系统的散热是关键。
同时由于黏度增加,长链游离基末端被包埋,扩散困难使游离基双基终止速率大大降低,致使聚合速率急剧增加而出现所谓自动加速现象或凝胶效应,这些轻则造成体系局部过热,使聚合物分子量分布变宽,从而影响产品的机械强度;重则体系温度失控,引起爆聚。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六查找的操作
一、实验目的
1.理解查找的定义和各种查找方法的特点;
2.掌握顺序和二分查找算法的基本思想及其实现方法。
二、实现提示
查找:根据给定的某个值,在表中确定一个其关键字等于给定值的数据元素或(记录)的操作,应用十分广泛。
顺序查找的基本思路是:从表的一端开始,顺序扫描线性表,依次将扫描到的关键字和给定值k相比较,若当前扫描到的关键字与k相等,则查找成功;若扫描结束后,仍未找到关键字等于k的记录,则查找失败。
二分查找也称为折半查找,要求线性表中的结点必须己按关键字值的递增或递减顺序排列。
它首先用要查找的关键字k与中间位置的结点的关键字相比较,这个中间结点把线性表分成了两个子表,若比较结果相等则查找完成;若不相等,再根据k与该中间结点关键字的比较大小确定下一步查找哪个子表,这样递归进行下去,直到找到满足条件的结点或者该线性表中没有这样的结点。
三、实验内容
对给定的任意数组(设其长度为n),分别用顺序和二分查找方法在此数组中查找与给定值k相等的元素。
四、程序填空与调试
#include<stdio.h>
#define MAXL 1000
typedef int KeyType;
typedef char InforType[10];
typedef struct
{
KeyType key;
InforType data;
}NodeType;
typedef NodeType SeqList[MAXL];
int SeqSearch(SeqList R,int n,KeyType k)//顺序查找
{
int i=0;
printf("顺序查找的元素值为:");
while(i<n&&R[i].key!=k)
{
printf(" %d",R[i].key);
i++;
}
if(i>=n)
return -1;
else
{
printf(" %d",R[i].key);
return i;
}
}
void s_sort(SeqList e, int n ) // e:存储线性表的数组,n:线性表的结点个数{//排序
int i, j, k;
KeyType t;
for( i = 0; i < n-1; i++ ) /* 控制n-1趟的选择步骤 */
{
for( k = i, j = i + 1; j < n; j++ )/* 在e[i], e[i+1],...,e[n-1]中选键值最小的结点e[k] */
if( e[k].key > e[j].key )
k=j;
if( k!=i)
{/* e[i]与e[k]作交换 */
t = e[i].key;
e[i].key = e[k].key;
e[k].key = t;
}
}
}
int BinSearch(SeqList R,int n,KeyType k)
{//非递归二分查找
int low=0,high=n-1,mid,count=0;
while(low<=high)
{
mid=(low+high)/2;// “/”:参与运算的量均为整型时,结果为整型,舍去小数。
如果运算量中有一个为实型,结果为双精度实型。
printf("第%d次查找:在[%d,%d]中找到元素R[%d]:%d\n",++count,low,high,mid,R[mid].key);
if(R[mid].key==k)
return mid;
if(R[mid].key>k)
high=mid-1;
else
low=mid+1;
}
return -1;
}
int BinSearch1(SeqList R,KeyType k, int low,int high)
{
int mid;
if(low>high)
return -1;
mid=(low+high)/2;
if(k==R[mid].key)
return mid;
else if(k<R[mid].key)
return BinSearch1(R,k,low,mid-1);
else
return BinSearch1(R,k,mid+1,high);
}
void main()
{
SeqList R;
int n=10,i;
KeyType k=7;
int a[]={21,5,13,4,32,6,7,15,9,17};
for(i=0;i<n;i++)
R[i].key=a[i];
printf("\n");
if((i=SeqSearch(R,n,k)) != -1)
printf("\n顺序查找元素%d的位置是%d\n",k,i);
else
printf("\n元素%d的位置不在表中\n",k);
printf("\n\n");
s_sort(&R,n);
printf("排序后的数据序列为:\n");
for(i=0;i<n;i++)
printf(" %d",R[i].key );
printf("\n\n");
if((i=BinSearch(R,n,k)) != -1)
printf("\n非递归地二分查找元素%d的位置是%d\n",k,i);
else
printf("\n元素%d的位置不在表中\n",k);
printf("\n");
if((i=BinSearch1(R,k,0,9))!=-1)
printf("\n递归地二分查找元素%d的位置是%d\n",k,i);
else
printf("\n元素%d的位置不在表中\n",k);
printf("\n");
}。