数据结构课程设计教学大纲

上传人:ni****g 文档编号:492286497 上传时间:2023-09-15 格式:DOC 页数:14 大小:141.50KB
返回 下载 相关 举报
数据结构课程设计教学大纲_第1页
第1页 / 共14页
数据结构课程设计教学大纲_第2页
第2页 / 共14页
数据结构课程设计教学大纲_第3页
第3页 / 共14页
数据结构课程设计教学大纲_第4页
第4页 / 共14页
数据结构课程设计教学大纲_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《数据结构课程设计教学大纲》由会员分享,可在线阅读,更多相关《数据结构课程设计教学大纲(14页珍藏版)》请在金锄头文库上搜索。

1、数据结构课程设计教学大纲Data Structure Course Design一、课程的性质、教学目的和要求数据结构是计算机软件的一门基础课程,计算机科学各领域及有关的应用软件都要用到各种类型的数据结构。学好数据结构对掌握实际编程能力是很有帮助的。为了学好数据结构,必须编写一些在特定数据结构上的算法,通过上机调试,才能更好地掌握各种数据结构及其特点,同时提高解决计算机应用实际问题的能力。二、设计要点1设计和调试过程要规范化。 需求分析将题目中要求的功能进行叙述分析,并且设计解决此问题的数据存储结构,(有些题目已经指定了数据存储的,按照指定的设计),设计或叙述解决此问题的算法,描述算法建议使用

2、流程图,进行算法分析指明关键语句的时间复杂度。给出实现功能的一组或多组测试数据,程序调试后,将按照此测试数据进行测试的结果列出来 。对有些题目提出算法改进方案,比较不同算法的优缺点。如果程序不能正常运行,写出实现此算法中遇到的问题,和改进方法。源程序(可以是一组源程序,即详细设计部分)源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。 程序能够运行,要有基本的容错功能。尽量避免出现操作错误时出现死循环。2课程设计实习报告的书写格式 设计题目(任选其一)运行环境(软、硬件环境)算法设计的思想算法的流程图算法设计分析源代码运行结果分析收获及体会3实施

3、方式可设2-3人一题,安排在数据结构课程开课学期布置题目,然后在期末前两周完成。三设计要求学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时的向教师汇报。课程设计按照教学要求需要1周时间完成,1周中每天至少要上6-8小时的机来调试C语言设计的程序,总共至少要上机调试程序30小时。为保证质量,需要每个学生将每天的上机调试程序的时间记录下来,作为评判成绩的标准之一。四设计题目1、校园导游程序 问题描述用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。

4、要求能够回答有关景点介绍、游览路径等问题。基本要求(1) 查询各景点的相关信息;(2) 查询图中任意两个景点间的最短路径。(3) 查询图中任意两个景点间的所有路径。(4) 增加、删除、更新有关景点和道路的信息。选作内容(1) 求多个景点的最佳(最短)游览路径。(2) 区分机动车道和人行道。(3) 实现导游图的仿真界面。2、算术表达式求值问题描述 一个算术表达式是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的。假设操作数是正整数,运算符只含加减乘除等四种运算符,界限符有左右括号和表达式起始、结束符“#”,如:#(7+15)*(23-28/4)#。引入表

5、达式起始、结束符是为了方便。编程利用“算符优先法”求算术表达式的值。基本要求(1) 从键盘读入一个合法的算术表达式,输出正确的结果。(2) 显示输入序列和栈的变化过程。选作内容扩充运算符集合。引入变量操作数。操作数类型扩充到实数。3、文学研究助手问题描述文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。试写一个实现这一目标的文字统计系统,称为“文学研究助手”。基本要求英文小说存于一个文本文件中。待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后就全部完成。程序的输出结果是每个词的出现次数和出现位置所在行的行号,格式自行设计。测试数据以你的源程序模拟英文小说,程序语言

6、保留字集作为待统计的词汇集。实现提示设小说中的词汇一律不跨行。这样,每读入一行,就统计每个词在这行中的出现次数。出现位置所在行的行号可以用链表存储。若某行中出现了不止一次,不必存多个相同的行号。如果读者希望达到选作部分(1)和(2)所提出的要求,则首先应把KMP算法改写成如下的等价形式,再将它推广到多个模式的情形。选作内容(1) 模式匹配要基于KMP算法。(2) 整个统计过程中只对小说文字扫描一遍以提高效率。(3) 假设小说中的每个单词或者从行首开始,或者前置以一个空格符。利用单词匹配特点另写一个高效的统计程序,与KMP算法统计程序进行效率比较。(4) 推广到更一般的模式集匹配问题,并设待查模

7、式串可以跨行(提示:定义操作getachar)4. 迷宫求解问题描述可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出;基本要求含有两个以上的迷宫图,由用户选择哪一张迷宫图;实现深度优先、广度优先两种回溯法。在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、源程序、算法的时间复杂度、另外可以提出算法的改进方法;实现提示可以用一个二维数组存储迷宫图,值为1或者0分别表示通路和不通;搜索路径可以参考树的深度优先和广度优先算法。5.括号匹配的检验问题描述假设表达式中允许有两种括号:圆括号和方括号,其嵌套的顺序随意,即CC或( )等为正确格式,( )或(均为

8、不正确的格式。检验括号是否匹配的方法可用“期待的紧迫程度”这个概念来描述。例如:考虑下列的括号序列:()12345678当计算机接受了第1个括号以后,他期待着与其匹配的第8个括号的出现,然而等来的却是第2个括号,此时第1个括号“”只能暂时靠边,而迫切等待与第2个括号相匹配的 第7个括号“)”的出现,类似的,因只等来了第3个括号“”,此时,其期待的紧迫程度较第2个括号更紧迫,则第2个括号只能靠边,让位于第3个括号,显然第3个括号的期待紧迫程度高于第2个括号,而第2个括号的期待紧迫程度高于第1个括号;在接受了第4个括号之后,第3个括号的期待得到了满足,消解之后,第2个括号的期待匹配就成了最急迫的任

9、务了, ,依次类推。可见这个处理过程正好和栈的特点相吻合。基本要求设置一个栈,每读入一个括号,若是左括号,则作为一个新的更急迫的期待压入栈中,若是右括号,则或者是和当前栈顶的括号相匹配,或者是不合法的情况,输出“此串括号匹配不合法”。在初始和结束时,栈应该是空的。测试数据 输入 #( ()#,结果“匹配”输入 #( )#,结果“此串括号匹配不合法”#为起始和结束标志。6.停车场管理问题描述设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,

10、则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。测试数据设n=2,输入数据为:(A,1,5),(A,2,10),(D,1,15),(A,3, 20), (A,4,25),(A,5,30),(D,2,35),(D,4,40),(E,0,0)。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,其中,A表

11、示到达;D表示离去,E表示输入结束。基本要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表实现。实现提示需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:

12、汽车的牌照号码和进入停车场的时刻。选作内容(1) 两个栈共享空间,思考应开辟数组的空间是多少?(2) 汽车可有不同种类,则它们的占地面积不同,收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积。(3) 汽车可以直接从便道上开走,此时排在它前面的汽车要先开走让路,然后再依次排到队尾。(4) 停放在便道上的汽车也收费,收费标准比停放在停车场的车低,请思考如何修改结构以满足这种要求。7. 简单行编辑程序问题描述文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作。限制这些操作以行为单位进行的编辑程序称为行编辑程

13、序。被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的做法既不经济,也不总能实现。一种解决方法是逐段地编辑。任何时刻只把待编辑文件的一段放在内存,称为活区。试按照这种方法实现一个简单的行编辑程序。设文件每行不超过320个字符,很少超过80字符。基本要求实现以下4条基本编辑命令:(1) 行插入。格式:i将插入活区中第行之后(2)行删除。格式:d删除活区中第行(到第行)。两种格式的例子是:“d10”和“d1014”(3)活区切换。格式:n将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。(4)活区显示。格式:p逐页地(每页20行)显示活区内容,每显示一页之后请用户决定是否继续

14、显示以后各页(如果存在)。印出的每一行要前置以行号和一个空格符,行号固定占4位,增量为1。各条命令中的行号均须在活区中各行行号范围之内,只有插入命令的行号可以等于活区第一行行号减1,表示插入当前屏幕中第一行之前,否则命令参数非法。测试数据由学生依据软件工程的测试技术自己确定。注意测试边界数据,如首行、尾行。实现提示(1) 设活区的大小用行数activemaxlen(可设为100)来描述。考虑到文本文件行长通常为正态分布,且峰值在60到70之间,用320activemaxlen大小的字符数组实现存储将造成大量浪费。可以以标准行块为单位为各行分配存储,每个标准行块含81个字符。这些行块可以组成一个数组,也可以利用动态链表连接起来。一行文字可能占多个行块。行尾可用一个特殊的ASCII字符(如(012)8)标识。此外,还应记住活区起始行号。行插入将引起随后各行行号的顺序下推。(2) 初始化过程包括:请用户提供输入文件名(空串表示无输入文件)和输出文件名,两者不能相同。然后尽可能多地从输入文件中读入各行,但不超过activemaxlen-x。x的值可以自定,例如20。(3) 在执行行插入命令的过程中,每接收到一行时到要检查活区大小是否已达ac

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号