《数据结构课程设计》教学大纲2016
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构课程设计》
任务书
专业:
班级:
指导老师:
安徽大学江淮学院
理工部
2016年9月1日
一、课程的性质、目的
《数据结构》是计算机专业的专业基础课,学生通过理论学习,并在完成每章后面的一些小程序后,理解了数据结构的基本概念,掌握了一些基本的编程技术,但仅有这一方面的训练还是很不够的。《数据结构课程设计》是在学完《数据结构》课程之后的实践教学环节,是本专业重要的技能培训之一。
设置本课程的目的是:综合运用在“数据结构"课程中学到的理论知识,使学生们在解决具体问题的过程中,能够灵活熟练地选择合适的数据结构及设计有效的算法,从而加深对常用数据结构理论知识的理解,强化学生的逻辑思维能力和动手能力,培养良好的编程习惯,掌握实用软件设计的基本方法,可以在程序设计方法、上机操作等基本技能和科学作风方面受到比较系统和严格的训练。为后续课程的学习打下坚实基础。
二、教学的基本要求
通过本课程的学习,要求掌握常见数据结构的使用方法、相关算法的分析和理解,实用程序的开发技术。
1、基础知识
(1)熟练掌握C程序设计方法。
(2)熟练掌握常用数据结构(堆栈、队列、链表、二叉树等)的应用和程序设计的方法。
(3)熟练掌握排序等算法的应用和程序设计方法。
2、基本技能
(1)掌握阅读和分析C程序的方法。
(2)掌握设计和调式C程序的方法。
(3)掌握实用程序的开发技术。
(4)重点掌握实用程序开发中,问题分析,数据结构的设计、程序总体结构设计,用户界面设计,验证数据的组织和使用等程序设计基本技能和技巧。
3、基本要求
学生应正确理解和熟练掌握常用数据结构和算法设计所需的技术,设计中要求综合运用在《数据结构》课程中所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。
设计结束后要按要求写出课程设计报告。
(1)学生自愿或指定分组,每组6人左右。
(2)指导教师公布设计题目,集中介绍具体的设计任务。
(3)学生分组讨论任务、设计相应的技术方案。
(4)课余时间完成源程序和课程设计报告等文档书写工作,上机时间只能做调试工作。上机时带上源程序、数据结构教材、C语言教材。
(5)上机任务
1)选择合适的数据结构,并定义数据结构的结构体;
2)根据题目设计主要要求,设计出完整的算法;
3)设计出主程序(main函数),使其成为完整的程序。
三、课程教学基本内容
第一章一元多项式计算
1、教学目标
熟练掌握线性表的结构及基本操作。
2、主要内容
【问题】
能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加,并将结果输出。
【任务】
将任意给出的n次多项式建成单链表结构,结点的结构为系数、指数、指针,然后实现多项式求和运算。
良好的用户界面,对于错误的输入,要能给出信息提示。
3、重点与难点
【重点】
实现单链表的基本操作,包括链表的建立、结点的删除、链表的输出等函数。
【难点】
用线性链表表示多项式。每个结点有三个域:系数、指数、指向下一项的指针,头结点中存放多项式的项数。
第二章停车场管理
提高综合运用栈和队列知识,解决复杂问题的能力,以便熟练掌握栈和队列两种数据结构的实际应用。
2、主要内容
【问题】
设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
【任务】
试为停车场编制按上述要求进行管理的模拟程序。
设n=5,输入数据为:('A',1,5),('A',2,6),('D',1,10),('A',3,7),('A',4,8),('A',5,10),('D',2,12),('D',4,20),('E',0,0)。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,其中,'A'表示到达;'D'表示离去,'E'表示输入结束。
3、重点与难点
【重点】
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表实现。
【难点】
需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻排序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。
第三章哈夫曼编/译码器
1、教学目标
提高综合运用二叉树的知识,解决复杂问题的能力,以达到熟练掌握二叉树的运算和性质。
2、主要内容
【问题】
利用哈夫曼编码进行信息通讯可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传输的数据预先编码;在接收端将传来的数据进行译码(复原)。对于双工信道 (即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。
【任务】
试为这样的信息收发站写一个哈夫曼码的编/译码系统。
假定输入的正文是:"THIS PROGRAM IS MY FAVORITE",字符集和其频度如下:
3、重点与难点
【重点】
一个完整的哈夫曼码的编/译码系统应具有以下功能:
(l)I:初始化 (Initialization)。从终端读入字符集大小n,及n个字符和m个权值,建立哈夫曼树,并将它存于文件hfmtree中。
(2)创建正文文件。从终端读入若干字符,存入tobetrans。
(3)C:编码 (Coding)。利用已建好的哈夫曼树(如不在内存,则从文件hfmtree中读入),对事先建立的正文文件tobetrans中的正文进行编码,然后将结果存入文件codefile中。
(4)D:译码 (Decoding)。利用已建好的哈夫曼树将文件codefile中的代码进行译码,结果存入文件textfile中。
(5)P:输出编码文件 (Print)。将文件codefile以紧凑格式显示在终端上,每行50