数据结构课程实习大纲-2015

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本题要求设计并实现一款专业的文本编辑器,兼具记事本、EditPlus 和 UltraEdit 的常用 功能。 【基本要求】 一个完整的文本编辑器软件应具有以下功能: (1)文件操作
提供基于磁盘的文本的创建、打开、保存、另存等功能。 支持文件的加密和解密(算法自己选择)。 (2)编辑操作 提供文件的剪切、复制、粘贴、删除等操作;提供不少于 10 次的撤消与重做操作。 支持单个文件在两个视窗的同步编辑。 提供文本视图(ASCII 码)和十六进制编辑视图的显示切换。 (3)搜索操作 提供文件的查找、替换、在文件中查找、在文件中替换等操作,支持多行查找和替换对 话框。 (4)统计操作 提供全部字母、文字、数字、空格、标点的统计功能。 (5)显示设置 提供编辑器背景、前景的修改,行号开关显示。 【提高要求】 (1)支持拖曳功能:用户可用拖曳功能来开启文件(采用 OLE 技术)。 (2)提供超过 4GB 的大文件处理。 (3)提供多个文件的同时编辑处理。 【测试数据】 文本编辑器-小数据.txt 80KB 文本编辑器-大数据.txt 9.7MB 【实现提示】 (1)文本编辑和显示不允许使用现有的控件,例如 CEdit、CRichEditCtrl、QTextEdit 等。 (2)可以参考软件:EditPlus、UltraEdit、Notepad++。 (3)剪切、复制、粘贴等操作使用 Windows 的 Clipboard 功能。 (4)对于大文件处理,可以适当采用内/外存调度策略。Windows 环境下可以尝试使用“内 存映射”技术。
参数。 7、 必须在机房完成实习,严格考勤!
2
《数据结构与算法》课程设计题目
1、数据结构综合应用
【内容简介】 本题是针对数据结构中常用的数组、矩阵、哈希和图进行综合训练,共分四个小题,各
小题之间无关联,要求分别设计独立的程序来完成。 【基本要求】 (1)要求使用指定的测试数据文件; (2)要求算法的实现采用类封装完成,不使用书上的类模板。 【提高要求】 (1)基于 Windows 对话框界面,可选择输入/输出文件名。
HGFEDCBA IBAZYXWV JCNMLKJU KDEFGHIT LMNOPQRS 【要求】算法执行时间小于 1 秒,算法空间复杂度为○(1)。要求界面输入 M 和 N,结果输 出到文件中。 【测试数据】 M=500,N=500 M=1200,N=900 M=4000,N=5000
3
3、字符串匹配 【问题描述】 给定一个字符串,在一个数据量庞大的文件中查找并确认它是否存在,是魔 兽、星际等大型游戏进行字符串查找经常遇到的问题。其主要思想为:通过建立长度为 1024 的哈希表,使用“链地址法”进行冲突处理(将所有具有相同散列地址的数据元素放在同一 单链表中)。在构造哈希表过程中使用“三次哈希”,一个哈希值用来查找,后两个哈希值用 来校验,这样可以大大减少冲突的几率。常用的字符串哈希函数有 BKDRHash、APHash、 DJBHash、JSHash、RSHash、SDBMHash、PJWHash 和 ELFHash 等,要求在其中挑选三种 哈希函数,实现该算法。 【要求】 使用下面编码表中的字符, chat *str=“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz” 随机产生长度为 StringSize 的 StringCount 个字符串(例如 StringSize=10,StringCount=1000), 写到文件中,作为哈希函数的构造测试用例。 时间要求:给定关键字 key,可以在 O(1) + O(m)的时间复杂度内定位到目标,m 为拉链长 度,即桶深。 【输入】 测试文件(随机生成、提供样本数据) 哈希表的长度(桶的个数) 【输出】统计结果文件,格式为: 哈希表桶的个数 建立哈希表的字符串的个数 建立哈希表的不重复的元素个数 冲突的桶的个数 最长的链的长度 链表的平均长度 哈希表桶的使用率
1、数组元素的移动
【问题描述】设有一个长度为 n 的一维数组 A[n]={a0,a1,…an-1},要求指定元素移动方向
MoveDir(0:左移,1:右移)和移动位数 P(0<P<n),将数组当中的所有元素移动 P 个
位置。
【要求】算法的时间复杂度为○(n),空间复杂度为○(1)。测试输入文件格式不允许修改,
《数据结构与算法》课程设计大纲
(一)课程设计教学目的及基本要求
1、了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 2、初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 3、提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 4、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学 的工作方法和作风。
5
3、文本编辑器的实现(文件操作、栈、字符串等算法应用)
【问题描述】 文本编辑器一个面向用户的实用应用软件,可用于文本的输入、删除、替换、查找、修
改等一系列操作。好的文本编辑器,甚至可以处理 HTML 和程序语言,用户可以将其作为 C、Java、Php 等语言的一个简单的 IDE。
简单的文本编辑器通常直接把文件读至内存,无法处理较大文件。专业的文本编辑器, 不限制打开文件的大小,能够编辑超过内存大小的文件。
和指导老师交流对题目的理解。 4、 请各位同学自行完成课程设计内容。如有网上下载或同学间雷同,成绩将以不通过计!!! 5、 请各位同学把实习题目当作产品来完成。追求完善,不要应付老师检查,程序要求有良
好的结构及编码风格,有必要的注释。 6、 为了减少调试时间,可以把测试数据及操作都使用文件存储,也可在“项目属性”中指定
中插入或删除记录时,为了保持较好的检索性能,索引结构本身将随之Fra Baidu bibliotek生改变。教材上已 经介绍的动态查找数据结构包括:二叉搜索树(BST)、平衡二叉树(AVL)、红黑树(RBT)、 B-树。
本题要求选取一种已经学过的动态搜索树结构,设计并实现一个基于英语四级词汇的电 子辞典软件。 【基本要求】 一个完整的电子辞典软件应具有以下功能: (1)支持词库数据的导入、导出操作,外部数据采用 TXT 格式。注意:文本文件打开一次 后,下次不用再装载。 (2)支持英文单词的添加、修改、删除等功能;
(三)课程设计考核方法及成绩评定
课程设计结束时,要求学生写出课程设计报告(附源程序),可运行的软件系统。课程 设计成绩分两部分,设计报告占 30%,设计作品占 70%。
1
(四)课程设计注意事项
1、 课程设计报告要求 按格式要求完成实习报告,每人用 A4 纸打印课程设计报告(源代码可不打印),此外,
① 添加操作要防止重复输入; ② 修改或删除某个单词的信息,在操作前,需先进行查找定位。 (3)支持英文单词的各种查询操作,具体包括: ① 逐条翻看
能按照英文单词的顺序,显示所有的单词记录,支持分页滚动查看。 ② 单词查找
输入英文单词,给出其汉语意思。要求支持两种方式:精确查找(按单词查)和模 糊查找(按前几个字母查)。 ③ 单词记忆 最近浏览过的 10 个单词,允许回退/前进进行浏览。 (4)要求使用 BST 或者 AVL 实现动态索引结构。 (5)用户界面友好,考虑输入的容错性。 【提高要求】 (1)支持“根据中文反查英文单词”的功能。提示:可考虑由汉字机内码构造英文哈希表; (2)背单词功能:支持“单词填空”的简单背单词软件功能。提示:可参考的软件包括: 新东方背单词:(http://www.neworiental.org/);轻轻松松背单词(http://www.pgy.com.cn/)等。 (3)支持英文发音功能,读出英文单词。提示:可使用微软的 TTS(Text to Speech)开发 包来完成,TTS 发音是利用 CPU 将任意组合的文本件转化为声音文件。 (4)使用红黑树或者 B-树的数据结构,来实现动态索引结构。 【测试数据】 《2010 年大学英语四级词汇.txt》 、 《英语四级高频词汇 700 个》 【实现提示】 (1)设计合适的电子辞典数据文件格式; (2)设计合适的索引文件格式; (3)可能用到的 MFC 控件包括:CListBox、CComboBox、CListCtrl 等,支持滚动条。
写程序,输出各队的排名顺序。
【要求】
(1)使用图的算法实现,物理存储采用邻接矩阵;
(2)输入、输出采用下面的文件格式;
(3)采用图形绘制函数(GDI),在 MFC 视图中绘制出该图的形状;
(4)如果符合条件的排名顺序不唯一,则输出文件中给出所有可能的排名顺序。
【输入】
N,M //N 表示队伍的个数,M 表示接着有 M 行的输入数据,逗号分隔。
(二)课程设计内容及安排
1、问题分析和任务定义。根据设计题目的要求,充分地分析和理解问题,明确问题要求做 什么?(而不是怎么做?)限制条件是什么? 2、逻辑设计。对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中 心的原则划分模块,定义主程序模块和各抽象数据类型。逻辑设计的结果应写出每个抽象数 据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并 画出模块之间的调用关系图。 3、物理设计。定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑 系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数 据封装,基本操作的规格说明尽可能明确具体。详细设计的结果是对数据结构和基本操作作 出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架。 4、程序编码。把详细设计的结果进一步求精为程序设计语言程序。同时加入一些注解和断 言,使程序中逻辑概念清楚。 5、程序调试与测试。采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试 工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后, 认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果。 6、结果分析。程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。 算法的时间、空间复杂性分析。 7、编写课程设计报告。(具体格式参见附录课程设计报告格式。)
结果输出到文件中。
【测试数据】
元素移动.txt
文件格式为:
n: 97
数组长度
MoveDir: 0
移动方向
P: 5
移动位数
9580 7116 7523… 数组元素,以空格分隔
2、矩阵生成 【问题描述】给一个 M*N 的矩阵(0<M<100,0<N<100),矩阵中元素取值为 A 至 Z 的 26 个字 母中的一个,A 在右上角,其余各数按“逆时针方向”旋转前进,依次递增放置,当超过 26 时又从 A 开始填充。例如: M=5,N=8 时,对应矩阵为:
请学习委员将所有同学的源代码收齐后刻在一张光盘上,光盘上分别为每位同学的资料建一 个文件夹(名为“班学号姓名”,如 111141-01-XXX),其中存入该同学课程设计的源程序及 课程设计报告的电子文档。 2、 实习结束后一周内交。 3、 第一次上机之前请各位同学对实现题目仔细研究,最好能有自己的思路。第一次上机时
P1,P2 //P1 队赢了 P2 队
。。。
【输出】
N
//结果数目
P1,P2,P4,P3。。。 //队伍排名顺序,逗号分隔
【测试数据】
排名确定.txt
4
2、英语四级电子辞典的实现(动态查找表算法的应用)
【问题描述】 电子辞典是一种将传统的印刷词典转成数码方式、进行快速查询的学习工具,成为 21
世纪学生学习生活的掌上利器。 在很多实际应用中,动态索引结构在文件创建或初始装入记录时生成,在系统运行过程
4、排名确定
【问题描述】有 N 个比赛队(1<=N<=500),编号依次为 1,2,3,。。。。,N 进行比赛,比赛结束
后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的
比赛成绩,只知道每场比赛的结果,即 P1 赢 P2,用 P1,P2 表示,排名时 P1 在 P2 之前。试编
相关文档
最新文档