数据结构课程课外实践任务

上传人:b**** 文档编号:76585438 上传时间:2022-04-18 格式:DOC 页数:25 大小:208KB
收藏 版权申诉 举报 下载
数据结构课程课外实践任务_第1页
第1页 / 共25页
数据结构课程课外实践任务_第2页
第2页 / 共25页
数据结构课程课外实践任务_第3页
第3页 / 共25页
资源描述:

《数据结构课程课外实践任务》由会员分享,可在线阅读,更多相关《数据结构课程课外实践任务(25页珍藏版)》请在装配图网上搜索。

1、 . . . 数据结构课程课外实践安排(2012-2013学年第一学期)课外实践学时:32学时课外实践目的:综合应用数据结构课程中所学的数据结构:线性表、栈、队列、串、数组、广义表、树、二叉树、图、查找表中的一种或多种数据结构完成一个较大问题的求解(其实这里的问题也并不太大,所用的数据结构可能是其中的多个,也可能是其中的一个两个)。从而培养学生综合应用基本数据结构分析、解决实际问题的能力,并进一步加深对所学知识的理解和掌握。课外实践要求:1、课外实践以组为单位开展,每组35名同学,自由组合,确定组长一名。2、每组从附件1列出的题目中任意选择其中一个完成(鼓励大家选择对你自己而言有一定挑战性的题

2、目),每个题目最多由3组同学选做。强调独立思考,组分工明确,每组自己完成。3、鼓励大家参考教材上、参考书上和所选题目相关的容和算法。不鼓励大家一拿到实验题目就去网上或参考书上找相关程序源代码,通过思考该问题并最终解决该问题不仅可以锻炼大家,从而提高大家的水平,而且大家对该问题的解决也会有成就感!4、实现你所选题目要求的功能,并能够进行较完善友好的输入输出验证。5、完成你所选的课外实践题目后,就该题目给出设计报告(设计报告格式另给),并按时上交。6、每组同学须仔细阅读所选题目的要求,认真主动完成设计要求。有问题与时主动通过各种方式与教师联系沟通。同学们要发挥自主学习的能力,充分利用课外时间,安排

3、好课外实践的时间,并在设计过程中不断检测自己的计划完成情况,与时的向教师汇报。 课外实践按照教学要求需要思考和上机调试程序至少32学时,代码量要求在6003000行。7、课外实践的考核需要按组进行答辩,安排在第16周或17周进行。附件1:数据结构课程课外实践可选题目一、运动会分数统计系统 任务:参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,n=20) 功能要求:1).可以输入

4、各个项目的前三名或前五名的成绩; 2)能统计各学校总分, 3)可以按学校编号、学校总分、男女团体总分排序输出; 4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 规定:输入数据形式和围:20以的整数(如果做得更好可以输入学校的名称,运动项目的名称) 输出形式:有中文提示,各学校分数为整数 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存

5、储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据与测试结果请在上交的资料中写明;二、学籍信息管理实验目的综合考察数据存储、以与对各种存储结构的建立、插入、删除、排序、查找等操作。实验要求设计一个简单的学籍管理系统。包括建立、插入、修改,查找、输出、排序(按不同关键字)实验容1. 从学生基本信息文件读入数据以建立学籍信息。下面是一个例子:学号 性别 宿舍 07011001 成成 男 501 87732111 07011002 成华 女 101 87723112 07011003 王成凤 女 101 87723112 0701

6、1004 明明 男 502 87734333 07011005 东 男 501 87732111 每个学生信息至少包括:学号、性别。文件至少包括10个学生。2. 从学生成绩信息文件读入其容建立学生的成绩信息。以下一个例子:(至少包含20项信息)学号 课程编号 课程名称 学分平时成绩 实验成绩 卷面成绩 综合成绩 实得学分 07011001 A01 大学物理 3 66 78 82 07011002 B03 高等数学 4 78 -1 90 07011001 B03 高等数学 4 45 -188 07011002 C01VF 3 65 7666功能要求极其说明: (1)数据录入功能:录入每个学生的学

7、号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。实得成绩、实得学分根据条件自动运算。 综合成绩的计算: a.如果本课程的实验成绩为-1,则表无实验成绩,综合成绩=平时成绩*30%+卷面成绩*70% b.如果实验成绩不为-1,表示本课程有实验成绩,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70%实得学分的计算:采用等级学分制。 综合成绩在90100之间,应得学分=学分*100% 综合成绩在8090之间,应得学分=学分*80% 综合成绩在7080之间,应得学分=学分*75% 综合成绩在6070之间,应得学分=学分*60% 综合成绩在60分以下,应得学分=学分*0

8、%3. 查询功能:分为学生基本情况查询和成绩查询两种 4. 删除功能:根据输入的学生或学好删除相应的学生信息。5. 排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。三、队列应用(用队列模拟超市交款处的顾客流)使用一个队列模拟一队通过丹尼斯超市交款处的顾客流。为了创建这个模拟,我们必须模拟排队时间和顾客通过流。我们可以通过一个循环模拟时间,每通过一个顾客代表一定的时间间隔例如,一分钟。我们可以使用一个队列模拟顾客流,队列中的一个数据项代表一位顾客。为了完成这个模拟,我们需要知道顾客加入交款处队列的频率、交款结算服务情况和离开的频率。假设交款队列有以下属性。 每分钟有一个顾客完成

9、交款并离开(假设此时至少有一个顾客等待服务)。 每分钟有零个到两个顾客加入,没有顾客到达的概率是50% , 一个顾客到达的概率是 25 % ,两个顾客到达的概率是 25 。(如何模拟?)我们可以使用下面的算法模拟一个时间段 n 分钟的顾客流。初始化队列为空。for (minute = 0 ; minute n ; + + minute) 如果队列不空,对头顾客交款并离开(即出对);产生一个0-3围的随机数k;如果k=1,一个顾客加入交款队列(入对);如果k=2,两个顾客加入交款队列(入对);如果k=0或3,不增加任何顾客到交款队列; 调用 rand ( )函数是产生伪随机数的一种简单的方法,r

10、and函数在中。我们的模拟程序应该在每一个模拟分钟期间更新下列信息,即每一次通过循环。 完成交款服务的总顾客数 这些顾客花费在排队等待的时间总和 顾客花费在排队等待的最长时间为了计算顾客等待的时间长度,我们需要存储“minute”,作为这个客户队列数据项的一部分,表示顾客加入的时间。如果你使用程序模拟一列顾客流,试着完成下面的表格。请注意,平均等待时间是等待时间总和除以总的服务顾客数。时间(分钟) 总的顾客服务时间 平均等待时间 最长等待时间3060120480四、应用哈夫曼树实现文件的压缩 实验目的:掌握二叉树的链式存储结构和常用算法。利用哈夫曼树设计最优压缩编码。实验容:1) 编写函数,实

11、现建立哈夫曼树和显示哈夫曼树的功能。2) 编写函数,实现生成哈夫曼编码的功能。3) 编写主函数,从终端输入一段英文文本;统计各个字符出现的频率,然后构建哈夫曼树并求出对应的哈夫曼编码;显示哈夫曼树和哈夫曼编码。选做容:修改程序,选择实现以下功能:4) 编码:用哈夫曼编码对一段英文文本进行压缩编码,显示编码后的文本编码序列;5) 统计:计算并显示文本的压缩比例;6) 解码:将采用哈夫曼编码压缩的文本还原为英文文本。 算法说明:1) 二叉树和哈夫曼树的相关算法见讲义。2) 编码的方法是:从头开始逐个读取文本字符串中的每个字符,查编码表得到它的编码并输出。重复处理直至文本结束。3) 解码的方法是:将

12、指针指向哈夫曼树的树根,从头开始逐个读取编码序列中的每位,若该位为1则向右子树走,为0则向左子树走。当走到叶子节点时,取出节点中的字符并输出。重新将指针放到树根,继续以上过程直至编码序列处理完毕。4) 压缩比例的计算:编码后的文本长度为编码序列中的0和1的个数,原文本长度为字符数*8。两者之比即为压缩比。五、数据压缩实验目的1)调研数据压缩原理与相关算法的实现;2)实现一个压缩/解压缩程序实验要求1. 阅读相关资料,理解数据压缩的意义和过程。2. 调研几个著名的数据压缩算法,写一份调研报告,说明其算法与所使用的数据结构。3. 实现一个压缩/解压缩程序,算法任意。4. 程序要求:控制台界面。首先

13、实现对单文件压缩的功能。命令行格式:压缩: 程序名 -c 输入文件 输出文件名解压缩: 程序名 -d 输入文件 输出文件名里容表示可选。控制台输出:压缩: 原始文件大小、压缩后文件大小、压缩比例、消耗时间解压缩: 解压前文件大小,解压后文件大小、压缩比例、消耗时间选做:1)将多个文件压缩到一个文件;2)检查压缩文件完整性,测试其能够完成解压缩;3)对文件测试,不压缩,输入其若压缩后的压缩率;4)列出压缩文件所包含的文件名;4)实现对整个目录进行压缩的功能。文件格式:对压缩文件起一个后缀名。若在命令行中没指定输入文件的话,输出文件名应该是 输入文件名+.后缀名 的格式;若在命令行中指定输出文件名

14、的话,后缀也应自动加上。实现的压缩比例越高、压缩事件越短越好。六、HTML文件中有序列表的语法树提取与基于树的检索实验说明HTML语言用来描述Web文档的通用格式和布局。详细的介绍可以参照一些书本或者网上资料。HTML中基本的语法单位称为标签。总的来说,标签用于指定容的类别。对于每个类别,针对特定的容,浏览器都有默认的显示方式。标签的使用语法是利用一对尖括号“”将标签名称包围起来。大部分标签都是成对的:包括开始标签和结束标签,如和。开始标签和结束标签之间的信息称为标签的容。这里仅考虑一个HTML语言的子集,该子集包含以下标签:, :标识文档的根元素;, :包含了文档的头部分,该部分提供了文档的

15、相关信息,而没有提供文档的容;, :文档的标题元素,其容显示在浏览器的顶部;, :文档的主体部分,提供了文档的容;, :有序列表标签,用于创建有序列表,列表中的条目是通过标签, 指定的。可以嵌套有序列表。标签后不能直接嵌套,而必须通过嵌套。例如,下面的示例演示了嵌套的有序列表: test for nested lists Section 1Section 1.1Section 1.2Section 2显示结果是:1. AnhuiProvince1. City Hefei2. City Wuhu2. Shanghai对应的语法树为:Anhui ProvinceShanghaiCity Hefei

16、City Wuhu图2.1通过上面的HTML语言子集,可以设计结构化的Web文档。对于这样的文档,我们可以提取其结构信息,建立对应的结构化数据存储,并可以在此基础上进一步做相应应用如查询操作等。实验目的熟练应用线性结构、树等数据结构。实验容1. 根据前面介绍的HTML语言子集,编写合法的文档,作为输入文件。也可以使用附录中所给的容建立文档作为输入;2. 然后用相应算法提取其结构化信息,生成如图2.1的树形结构。3. 在已经建立的结构化存储数据结构上,做单词查询操作。输入一个查询关键字(如”City”),要求返回所有匹配的单词所在原HTML文档中的位置信息(如,City: Section 1.2

17、 the first word and Section 1.2 the first word)。4. 下面给出一个实现的算法。这里考虑一个简单的情况,即中只有一个有向列表,对于标签中有多个列表的情况,通过简单的修改此算法可以解决:1) 对于这样一个HTML文档,, , 是无关紧要的,在读取文档容时可以忽略。核心的结构化信息在有序列表中。2) 遇到第一个时,生成头节点,头节点容为空,curParent=curNode都指向该节点;3) 每当遇到一个,生成curParent指向的节点的一个子节点curNode,后容即为该节点的容;4) 每当遇到一个,curParent=curNode,准备以cur

18、Parent为根的子树(递归操作);5) 每当遇到一个,则curNode指向的节点生成完毕(即不再往下递归地生成子树),继续读文件(注意,后的第一个应忽略,因为其后必然有一个);6) 每当遇到一个,则以curParent 为根的子树生成完毕,curParent=curParent-parent;7) 当读到时,整个树生成完毕,返回其头指针。针对前面示例的html文件,其语法树生成过程图示如下:1curParentcurNodeAnhui Province12curParentcurNode(a) 读到第一个,生成空的头节点1 。 (b) 读到后第一个,生成第一个 子节点2,并将其后容作为节点容

19、。Anhui Province123City HefeicurParentcurNodeCity WuhuCity HefeiAnhui Province1234curParentcurNode(c) 遇到,curParent=curNode,准备 (d) 再次读到,生成以curParent以curParent为根生成子树;读到,生 为根的子节点4;读到,非成以curParent为根的子节点3;读到 后第一个,curNode指向的节点,非后的第一个,curNode指向 生成完毕。的节点生成完毕。 Anhui ProvinceCity WuhuCity Hefei1234curParentcur

20、NodeAnhui ProvinceCity WuhuCity HefeiShanghai1234curParentcurNode5(e) 读到,则以curParent为根的子树 (f) 读到,生成以curParent为根的生成完毕,curParent=curParent-parent, 子节点5,容为”Section 2”;再读到即curParent从2变为1;再往下读到, ,curNode节点生成结束;读到此为后第一个,忽略掉,继续往后 ,以curParent(节点1)为根的读文件。 子树生成完毕;读到,整个树 生成完毕,返回头指针。六、迷宫问题。传说在远古时候,米诺斯国王统治着爱琴端的克

21、里特岛。他建造了一座有无数宫室的迷宫,在迷宫中喂养了一头人身牛头的恶兽米诺牛。为了供奉它,米诺斯要希腊的雅典每九年进贡七对童男女喂米诺牛。当时,雅典有位名叫忒休斯的王子,他不忍人民遭受这种灾难,毅然决定跟随第四批被进贡的童男女去克里特杀死米诺牛。在克里特,英勇的忒休斯赢得了米诺斯的女儿的爱慕。她交给忒休斯一个线团,让他按下面规则边走边放线:(1)每到一个岔口,找没有铺上线的路走;若找不到未铺上线的路,就沿原来的路返回到前一个岔口。(2)不走已铺上两条线的路。用这种方法,忒休斯终于杀死米诺牛,胜利的走出迷宫七、学生数据结构成绩管理系统基本要求(1)学生信息与成绩的录入要求包括的学生信息有:学号、

22、性别、出生日期、民族与数据结构成绩(具体容可自行假设,至少录入10名以上学生)所录入的学生按学号散列存储(散列函数为:学号%5 取整,如 1002%5 =2),采用拉链法解决冲突。(2)学生成绩的查询要求根据提供的学号完成学生成绩的查询(必须采用哈希查找)(3)学生成绩的分段统计和排序输出统计出各分数段学生人数(60分以下,6070,7180,.)采用任何一种排序方法,将学生成绩从高到低排序输出八、哈希表应用问题描述针对某个集体中人名设计一个哈希表,使得平均查找长度不超过R,并完成相应的建表和查表程序。基本要求假设人名为中国人的汉语拼音形式。待填入哈希表的人名共有300个,取平均查找长度的上限

23、为2。哈希函数用除留余数法构造,用线性探测再散列法或链地址法处理冲突。测试数据取读者周围较熟悉的300个人名。选作容(1) 从教科书上介绍的集中哈希函数构造方法中选出适用者并设计几个不同的哈希函数,比较他们的地址冲突率(可以用更大的名字集进行实验)。(2) 研究这300个人名的特点,努力找一个哈希函数,使得对于不同的拼音名一定不发生地址冲突。(3) 在哈希函数确定的前提下尝试各种不同处理冲突的方法,考察平均查找长度的变化和造好的哈希表中关键字的聚集性。九、部排序算法比较问题描述各种部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间。试通过随机的数据比较各算法的关键字比较次数

24、和关键字移动次数,以取得直观感受。基本要求(1) 对以下10种常用的部排序算法任意选择6种进行比较:直接插入排序;折半折入排序;二路插入排序;希尔排序;起泡排序;快速排序;简单选择排序;堆排序;归并排序;基数排序。(2) 待排序表的表长不小于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字移动次数(关键字交换计为3次移动)。测试数据由随机产生器决定。实现提示主要工作是设法在程序中适当的地方插入计数操作。程序还可以包括计算几组数据得出结果波动大小的解释。注意分块调试的方法。十、校园导游程序问题描述用无向网表示师学院校园景点或

25、建筑物平面图,图中顶点表示主要景点或建筑物,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。基本要求(1) 查询各景点的相关信息;(2) 查询图中任意两个景点间的最短路径。(3) 查询图中任意两个景点间的所有路径。(4) 增加、删除、更新有关景点和道路的信息。(5) 求多个景点的最佳(最短)游览路径。十一、实现第7章图中的部分算法,这些算法至少包括以下两组:(1) 深度和广度优先搜索遍历图;(2) 构造最小生成树的两种算法(3) 拓扑排序算法;(4) 求解关键路径;(5) 求解最短路径。十二、合理设计手机键盘题意描述我们

26、的手机键盘上将26个字母如下左图设置在8个键盘上,但每个字母的按键频率是不同的,因此如果按照右图的方式设置字母在键盘上的相对位置可能会使所有字母的按键频率与按键次数乘积之和达到最小,从而更加方便客户使用。我们的任务是根据输入的键盘数和字符数与每个字符的使用频率来确定最合理的分配方式,使分配后所有字符的频率和按键次数的乘积之和最小。在每个键盘上,处于第i个位置上的字符按键次数为i,在分配的过程中我们不能更改字符的相对位置。该题目详细描述如下:I-KeyboardTime Limit: 2000MSMemory Limit: 32768KTotal Submissions: 3235Accepte

27、d: 1690DescriptionMost of you have probably tried to type an SMS message on the keypad of a cellular phone. It is sometimes very annoying to write longer messages, because one key must be usually pressed several times to produce a single letter. It is due to a low number of keys on the keypad. Typic

28、al phone has twelve keys only (and maybe some other control keys that are not used for typing). Moreover, only eight keys are used for typing 26 letters of an English alphabet. The standard assignment of letters on the keypad is shown in the left picture: 12abc3def4ghi5jkl6mno7pqrs8tuv9wxyz*0space#1

29、2abcd3efg4hijk5lm6nopq7rs8tuv9wxyz*0space#There are 3 or 4 letters assigned to each key. If you want the first letter of any group, you press that key once. If you want the second letter, you have to press the key twice. For other letters, the key must be pressed three or four times. The authors of

30、the keyboard did not try to optimise the layout for minimal number of keystrokes. Instead, they preferred the even distribution of letters among the keys. Unfortunately, some letters are more frequent than others. Some of these frequent letters are placed on the third or even fourth place on the sta

31、ndard keyboard. For example, S is a very common letter in an English alphabet, and we need four keystrokes to type it. If the assignment of characters was like in the right picture, the keyboard would be much more comfortable for typing average English texts. ACM have decided to put an optimised ver

32、sion of the keyboard on its new cellular phone. Now they need a computer program that will find an optimal layout for the given letter frequency. We need to preserve alphabetical order of letters, because the user would be confused if the letters were mixed. But we can assign any number of letters t

33、o a single key. InputThere is a single positive integer T on the first line of input. It stands for the number of test cases to follow. Each test case begins with a line containing two integers K, L (1 = K = L 1, either Pi = Pi-1+1 or Pi = 1 there are at most K numbers Pi such that Pi = 1 the sum of

34、 products SP = F1*P1+F2*P2+.+FL*PL is minimal for any other sequence Q meeting these criteria and with the same sum SQ = SP, there exists such M, 1 = M = L that for any J, M J QM. The output for every test case must start with a single line saying Keypad #I:, where I is a sequential order of the tes

35、t case, starting with 1. Then there must be exactly K lines, each representing one letter, in the same order that was used in input. Each line must contain the character representing the key, a colon, one space and a list of letters assigned to that particular key. Letters are not separated from eac

36、h other. Print one blank line after each test case, including the last one. Sample Input18 2623456789ABCDEFGHIJKLMNOPQRSTUVWXYZ337158915751614621297177319042989123209158815132996326910801212726308343681334518752427733871Sample OutputKeypad #1:2: ABCD3: EFG4: HIJK5: LM6: NOPQ7: RS8: TUV9: WXYZ十三、二叉排序

37、树的应用(基于二叉排序树的个人通信录) 在日常生活中,个人通信录是我们不可少的,不管是纸式的个人通信录还是我们手机中的个人通信录,查寻是其最基本的操作,几乎所有的操作都是在查寻的基础上进行的,所以,查寻时间的快慢很大程度上决定了整个通信录的性能。所以,一个有着良好界面、查寻速快的通信录,是人们所追求的。本设计应用折半查寻法的技术思想进行查寻,从本思想出发,可以有两种数据组织方式:一是应用链表进行组织数据,由于折半查寻法的特殊性,所要进行查寻的数据列必须是有序的数据列,这样要求对数据列进行排序。出于系统实时查寻的考虑,每次对通信录进行改变后都得进行重新排序,这样才能保证数据列是实时有序的。这样当

38、操作量大时,排序所消耗的时间对整个系统有很大的影响。二是应用二叉排序树来组织数据,由于二叉排序树是应用折半查寻法思想进行对数据进行存储的,所以,其左孩子大于双亲结点、右孩子小于双亲结点(或者左孩子小于双亲结点、右孩子大于双亲结点),这样就可以应用折半查寻法的思想进行查寻,从而减少对排序时所消耗的时间。本设计采用第二种方法,即应用二叉排序树进行组织数据,在此基础上进行对个人通信录的各种操作。由于删除操作是本设计的重点,删除操作的成功与否直接影响到整个系统的成败,所以在此进行详细分析一下删除操作的实现。此功能函数主要应用于删除将要进行删除的记录,此操作较其它几个操作难一点,同时也是此次设计的重点,

39、所以,本函数的成败可以直接影响到本次设计的成败,同时,在进行二叉排序树进行组织时,如果不从系统的整体进行考虑,只想到简单地实现删除功能,将会出现错误。在设计初期,由于没有考虑所有可能的情况,所以在进行删除最后一个结点时,总会出现存不能引用的错误。最后想到应用浪费一个结点空间的技术进行处理此问题,就是根结点用来保存二叉排序树的某些信息,而不保存记录,与我们单链表中的头结点一样,这样做解决了上面所说的问题,同时在进行查寻双亲结点时也带来了很大的方便。有关二叉排序树的删除的有关问题,请读者参考相关的参考文献,在此不再进行说明,本节重点在于说明本课程设计中有关删除的问题。在本设计中,删除的首要条件是找

40、到将要进行删除结点的双亲结点,由于根结点不用于存储记录,所以,可以不用进行判断根结点的情况,进行查寻双亲结点时,从根结点开始,首先进行判断根结点的左右子树是否为空,如果根结点的左右子树为空,则返回NULL,如果根结点的左子树(右子树)不为空,则将其左子树(右子树)的记录的学号与将要进行删除的学号进行比较,如果相等,则返回根结点;否则进行比较,如果左子树(右子树)不为空,且左子树(右子树)的学号大于(小于)要进行删除的学号,则进行递归在左子树(右子树)中进行查寻,直到查寻到或者当前结点的左右子树为空时结束。如果当前结点的学号与要进行删除的学号不相等,且当前结点的左右子树为空,则返回空,结束查寻过

41、程。经过对双亲结点的查寻,如果没有此记录,则进行提示,否则进行删除操作1 5 ,在进行删除时,有以下几种可能,以下操作中假设每次把要进行删除结点进行删除后,同时也释放了此结点所占用的存空间,防止存在运行过程中丢失。第一:要进行删除的结点为叶结点,直接把其从二叉排序树中进行删除。第二:此结点只有左子树或者右子树,这种情况下只需将只需把此结点的左子树或者右子树替换为双亲结点的左子树。第三:此结点有左子树同时有也右子树,此种操作比较复杂,其中有两种方法进行删除,本课程设计中应用的方法是从某子树中找出一个结点(假设为Temp),将其值代替要进行删除结点的值,再把 Temp 结点进行删除。十四、DNA分

42、子的最佳比对问题描述:DNA分子是人类遗传信息的载体,它间接地指导蛋白质的合成。DNA分子是由四种核苷酸组成的长链,这四种核苷酸分别是腺嘌呤核苷酸(用A代表)、鸟嘌呤核苷酸(用G代表)、胞嘧啶核苷酸(用C代表)和胸腺嘧啶核苷酸(用T代表)。习惯上用一个字符集为A,T,C,G的字符串来表示一个DNA分子序列,如CGTTAGA。 在生物进化过程中,DNA分子可能发生各种各样的突变。这种突变形成了生物遗传信息的改变,从而使生物得以分化,构成了生物的多样性。主要的突变有三种:(1)在一个DNA序列中插入一个新的核苷酸,(2)DNA序列中丢失了一个核苷酸,(3)DNA序列中的某个核苷酸被另一个核苷酸所取

43、代。 所谓两个DNA序列的一个比对是寻找一种排列方式,使得两个DNA序列在同样的位置上有一样的核苷酸,而若在同样的位置上两个DNA序列的核苷酸不同,则是由三种突变之一得到。例如,对两个DNA序列T=ATCAG,T=ACTAG,可以按如下方式比对, 比对1: TT A A T - (“-”表示空白) C C - T A A G G也可以按如下方式比对 比对2: TT A A T C C T A A G G如果两个DNA序列在一样的位置上有越多一样的核苷酸对,则表明它们之间越相似,即它们存在功能上的相似性和进化史上的亲缘关系。 对于两个DNA序列的一个比对,规定如下得分方式:(1)一个同样的位置上

44、有一样的核苷酸对,则可得1分;(2)一个同样的位置上有不同的核苷酸对,则得0分;(3)如果在某个位置上一个序列有核苷酸,而另一个序列在该位置上为“-”,则得-2分。例如,比对1的得分是0分,比对2的得分是3分。编程任务:对于两个DNA序列,寻找一种比对方式,使得它们的得分最高。数据输入:输入数据由文件名为INPUT3.*的文本文件提供,共有2行。第1行为DNA序列T, 第2行为DNA序列T。序列的长度不大于5000。序列中的字母是英文小写或者大写字母。结果输出:程序运行结束时,在屏幕上输出两个DNA序列比对的最高得分。输入文件示例输出示例INPUT3.001AtcagActag3Human G

45、ene FunctionsTime Limit:1000MS Memory Limit:10000KTotal Submit:2255 Accepted:1440DescriptionIt is well known that a human gene can be considered as a sequence, consisting of four nucleotides, which are simply denoted by four letters, A, C, G, and T. Biologists have been interested in identifying hum

46、an genes and determining their functions, because these can be used to diagnose human diseases and to design new drugs for them. A human gene can be identified through a series of time-consuming biological experiments, often with the help of computer programs. Once a sequence of a gene is obtained,

47、the next job is to determine its function. One of the methods for biologists to use in determining the function of a new gene sequence that they have just identified is to search a database with the new gene as a query. The database to be searched stores many gene sequences and their functions many

48、researchers have been submitting their genes and functions to the database and the database is freely accessible through the Internet. A database search will return a list of gene sequences from the database that are similar to the query gene. Biologists assume that sequence similarity often implies

49、 functional similarity. So, the function of the new gene might be one of the functions that the genes from the list have. To exactly determine which one is the right one another series of biological experiments will be needed. Your job is to make a program that compares two genes and determines thei

50、r similarity as explained below. Your program may be used as a part of the database search if you can provide an efficient one. Given two genes AGTGATG and GTTAG, how similar are they? One of the methods to measure the similarity of two genes is called alignment. In an alignment, spaces are inserted

51、, if necessary, in appropriate positions of the genes to make them equally long and score the resulting genes according to a scoring matrix. For example, one space is inserted into AGTGATG to result in AGTGAT-G, and three spaces are inserted into GTTAG to result in GT-TAG. A space is denoted by a mi

52、nus sign (-). The two genes are now of equal length. These two strings are aligned: AGTGAT-G -GT-TAG In this alignment, there are four matches, namely, G in the second position, T in the third, T in the sixth, and G in the eighth. Each pair of aligned characters is assigned a score according to the

53、following scoring matrix. denotes that a space-space match is not allowed. The score of the alignment above is (-3)+5+5+(-2)+(-3)+5+(-3)+5=9. Of course, many other alignments are possible. One is shown below (a different number of spaces are inserted into different positions): AGTGATG -GTTA-G This a

54、lignment gives a score of (-3)+5+5+(-2)+5+(-1) +5=14. So, this one is better than the previous one. As a matter of fact, this one is optimal since no other alignment can have a higher score. So, it is said that the similarity of the two genes is 14. InputThe input consists of T test cases. The number of test cases ) (T is given in the first line of the input file. Each test case consists of two lines: each line contains an intege

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!