资源预览内容
第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
第9页 / 共21页
第10页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
“数据结构”课程设计-指导书 2011-6-2选题一:迷宫与栈问题【问题描述】以一个mXn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。【任务要求】1) 首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。如,对于下列数据的迷宫,输出一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),。2) 编写递归形式的算法,求得迷宫中所有可能的通路。3) 以方阵形式输出迷宫及其通路。【测试数据】迷宫的测试数据如下:左上角(0,1)为入口,右下角(8,9)为出口。选题二:算术表达式与二叉树【问题描述】一个表达式和一棵二叉树之间,存在着自然的对应关系。写一个程序,实现基于二叉树表示的算术表达式的操作。【任务要求】假设算术表达式Expression内可以含有变量(az)、常量(09)和二元运算符(+,-,*,/,(乘幂))。实现以下操作:1) ReadExpre(E)以字符序列的形式输入语法正确的前缀表达式并构造表达式E。2) WriteExpre(E)用带括弧的中缀表达式输出表达式E。3) Assign(V,c)实现对变量V的赋值(V=c),变量的初值为0。4) Value(E)对算术表达式E求值。5) CompoundExpr(P,E1,E2)-构造一个新的复合表达式(E1)P(E2)【测试数据】1) 分别输入0;a;-91;+a*bc;+*5x2*8x;+*3x3*2x2x6并输出。2) 每当输入一个表达式后,对其中的变量赋值,然后对表达式求值。选题三:银行业务模拟与离散事件模拟【问题描述】假设某银行有4个窗口对外接待客户,从早晨银行开门(开门9:00am,关门5:00pm)起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需要在每个窗口前顺次排队,对于刚进入银行的客户(建议:客户进入时间使用随机函数产生),如果某个窗口的业务员正空闲,则可上前办理业务;反之,若4个窗口均有窗户所占,他便会排在人数最少的队伍后面。【任务要求】1) 编制一个程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。2) 建议有如下设置:a) 客户到达时间随机产生,一天客户的人数设定为100人。b) 银行业务员处理时间随机产生,平均处理时间10分钟。3) 将一天的数据(包括业务员和客户)以文件方式输出。【测试数据】由随机数产生器生成选题四:文学研究助手与模式匹配算法KMP【问题描述】文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。试写一个实现这一目标的文字统计系统【任务要求】1) 英文小说存于一个文本文件中。待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后就全部完成。程序的输出结果是每个词的出现次数和出现位置所在的行的行号,格式自行设计。待统计的“单词”在文本串中不跨行出现,它或者从行首开始,或者前置以一个空格符。2) 模式匹配要基于KMP算法。3) 推广到更一般的模式集匹配问题,并设待查模式串可以跨行(提示:定义操作GetAChar)。【测试数据】1) 文本文件为testword.c2) 待统计的词集:if、else、for、while、return、void、int、char、typedef、struct选题五:北理珠校园导游咨询与最短路径【问题描述】1) 从北京理工大学珠海学院的平面图中选取有代表性景点(10-15个),抽象成一个无向带权图。以图中顶点表示景点,边上的权值表示两地之间距离。2) 本程序的目的是为用户提供路径咨询。根据用户指定的始点和终点输出相应路径,或者根据用户指定的景点输出景点的信息。【任务要求】1) 从北京理工大学珠海学院的平面图中选取有代表性景点(10-15个),抽象成一个无向带权图。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等信息。2) 为来访客人提供图中任意景点相关信息的查询。3) 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。4) 区分汽车线路与步行线路。【测试数据】北理珠校园导游图(距离可估计)。选题六:B-树与B+树及其操作【问题描述】学习并研究B-树与B+树,并编写演示它们操作的程序。【任务要求】1) B-树构建、查找、插入和删除操作程序。2) B+树构建、查找、插入和删除操作程序。【测试数据】选题七:哈夫曼(Huffman)编/译码器【问题描述】利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。【任务要求】一个完整的系统应具有以下功能:1) I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。2) E:编码(Encoding)。利用以建好的哈夫曼树(如不在内存,则从文件hfmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。3) D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。4) P:印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePrin中。5) T:印哈夫曼树(Tree Printing)。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。【测试数据】1) 利用教科书例6-2(严蔚敏数据结构P148)中的数据调试程序。2) 用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码和译码:“THIS PROGRAM IS MY FAVORITE”。字符空格ABCDEFGHIJKLM频度1866413223210321154757153220字符NOPQRSTUVWXYZ频度5763151485180238181161选题八:内部排序算法比较【问题描述】在教科书中,各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间。试通过随机数据比较各种算法的关键字比较次数和关键字移动次数,以取得直观感受。【任务要求】1) 对以下7种常用的内部排序算法进行比较:冒泡排序、直接插入排序、简单选择排序、希尔排序、堆排序、归并排序、快速排序。2) 待排序表的表长不小于100;其中的数据要用伪随机数程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换计为3次移动)。3) 最后要对结果作出简单分析,包括对各组数据得出结果波动大小的解释。【测试数据】由随机数产生器生成选题九:简单行编辑程序【问题描述】文本编辑器程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作。限制这些操作以行为单位进行的编辑程序称为行编辑程序。被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的作法既不经济,也不总能实现。一种解决办法是逐段地编辑。任何时刻只把待编辑文件的一段放在内存,利为活区。试按照这种方法实现一个简单的行编辑程序。设文件每行不超过320个字符,很少超过80个字符。【任务要求】实现以下4条基本编辑命令:1) 行插入:格式:il 将插入活区中第行之后。2) 行删除。格式:dl 删除活区中第(到第行)。例如“d10”和“d10 14”3) 活区切换。格式:nl 将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。4) 活区显示。模式:pl 逐页地(每页20行)显示活区内容,每显示一页之后请用户决定是继续显示以后各页(如果存在)。印出的每一行要前置行号和一个空格符,行号固定占4位,增量为1。各条命令中的行号均须在活区中各行行号范围之内,只有插入命令的行号可以等于活区第一行行号减1,表示插入当前屏幕中第一行之前,否则命令参数非法。【测试数据】自行设定,注意测试将活区删空等特殊情况。选题十:一元多项式计算【问题描述】1.能够按照指数降序排列建立并输出多项式;2.能够完成两个多项式的相加、相减,并将结果输入;【任务要求】1.存储结构;2.多项式相加的基本过程的算法(可以使用程序流程图)3.可以提出算法的改进方法;【测试数据】自行设定,注意边界等特殊情况。选题十一:集合的交、并、差运算【问题描述】 编制一个能演示执行集合的交、并和差运算的程序。【任务要求】1) 集合元素用小写英文字母,执行各种操作应以对话方式执行。2) 算法要点:利用单链表表示集合;理解好三种运算的含【测试数据】自行设定,注意边界等特殊情况。选题十二:动态查找表【问题描述】 利用二叉排序树完成动态查找表的建立、指定关键字的查找、插入与删除指定关键字结点。【任务要求】 算法输入:指定一组数据。算法输出:显示二叉排序树的中序遍历结果、查找成功与否的信息、插入和删除后的中序遍历结果(排序结果)。算法要点:二叉排序树建立方法、动态查找方法,对树进行中序遍历。【测试数据】自行设定,注意边界等特殊情况。选题十三:学生成绩管理【问题描述】 本例对学生的成绩管理做一个简单的模拟,用菜单选择方式完成下列功能: 登记学生成绩;查询学生成绩;插入学生成绩;删除学生成绩。【任务要求】 算法输入:操作要求,学生信息算法输出:操作结果算法要点:把问题看成是对线性表的操作。将学生成绩组织成顺序表,则登记学生成绩即是建立顺序表操作;查询学生成绩、插入学生成绩、删除学生成绩即是在顺序表中进行查找、插入和删除操作。【测试数据】
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号