《数据结构课程设计》教学大纲2016.doc
- 文档编号:4711707
- 上传时间:2023-05-07
- 格式:DOC
- 页数:10
- 大小:79KB
《数据结构课程设计》教学大纲2016.doc
《《数据结构课程设计》教学大纲2016.doc》由会员分享,可在线阅读,更多相关《《数据结构课程设计》教学大纲2016.doc(10页珍藏版)》请在冰点文库上搜索。
《数据结构课程设计》
任务书
专业:
班级:
指导老师:
安徽大学江淮学院
理工部
2016年9月1日
一、课程的性质、目的
《数据结构》是计算机专业的专业基础课,学生通过理论学习,并在完成每章后面的一些小程序后,理解了数据结构的基本概念,掌握了一些基本的编程技术,但仅有这一方面的训练还是很不够的。
《数据结构课程设计》是在学完《数据结构》课程之后的实践教学环节,是本专业重要的技能培训之一。
设置本课程的目的是:
综合运用在“数据结构"课程中学到的理论知识,使学生们在解决具体问题的过程中,能够灵活熟练地选择合适的数据结构及设计有效的算法,从而加深对常用数据结构理论知识的理解,强化学生的逻辑思维能力和动手能力,培养良好的编程习惯,掌握实用软件设计的基本方法,可以在程序设计方法、上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
为后续课程的学习打下坚实基础。
二、教学的基本要求
通过本课程的学习,要求掌握常见数据结构的使用方法、相关算法的分析和理解,实用程序的开发技术。
1、基础知识
(1)熟练掌握C程序设计方法。
(2)熟练掌握常用数据结构(堆栈、队列、链表、二叉树等)的应用和程序设计的方法。
(3)熟练掌握排序等算法的应用和程序设计方法。
2、基本技能
(1)掌握阅读和分析C程序的方法。
(2)掌握设计和调式C程序的方法。
(3)掌握实用程序的开发技术。
(4)重点掌握实用程序开发中,问题分析,数据结构的设计、程序总体结构设计,用户界面设计,验证数据的组织和使用等程序设计基本技能和技巧。
3、基本要求
学生应正确理解和熟练掌握常用数据结构和算法设计所需的技术,设计中要求综合运用在《数据结构》课程中所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。
设计结束后要按要求写出课程设计报告。
4、教学方式
(1)学生自愿或指定分组,每组6人左右。
(2)指导教师公布设计题目,集中介绍具体的设计任务。
(3)学生分组讨论任务、设计相应的技术方案。
(4)课余时间完成源程序和课程设计报告等文档书写工作,上机时间只能做调试工作。
上机时带上源程序、数据结构教材、C语言教材。
(5)上机任务
1)选择合适的数据结构,并定义数据结构的结构体;
2)根据题目设计主要要求,设计出完整的算法;
3)设计出主程序(main函数),使其成为完整的程序。
三、课程教学基本内容
第一章一元多项式计算
1、教学目标
熟练掌握线性表的结构及基本操作。
2、主要内容
【问题】
能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加,并将结果输出。
【任务】
将任意给出的n次多项式建成单链表结构,结点的结构为系数、指数、指针,然后实现多项式求和运算。
良好的用户界面,对于错误的输入,要能给出信息提示。
3、重点与难点
【重点】
实现单链表的基本操作,包括链表的建立、结点的删除、链表的输出等函数。
【难点】
用线性链表表示多项式。
每个结点有三个域:
系数、指数、指向下一项的指针,头结点中存放多项式的项数。
第二章停车场管理
1、教学目标
提高综合运用栈和队列知识,解决复杂问题的能力,以便熟练掌握栈和队列两种数据结构的实际应用。
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、主要内容
【问题】
利用哈夫曼编码进行信息通讯可以大大提高信道利用率,缩短信息传输时间,降低传输成本。
但是,这要求在发送端通过一个编码系统对待传输的数据预先编码;在接收端将传来的数据进行译码(复原)。
对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。
【任务】
试为这样的信息收发站写一个哈夫曼码的编/译码系统。
假定输入的正文是:
"THISPROGRAMISMYFAVORITE",字符集和其频度如下:
字符
空格
A
B
C
D
E
F
G
H
I
J
K
L
M
频度
186
64
23
22
32
103
21
15
47
57
1
5
32
20
字符
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
频度
20
56
19
2
50
51
55
30
10
11
2
21
2
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个代码。
同时将此字符形式的编码文件写入文件codeprint中。
(6)T:
输出哈夫曼树(Treeprinting)。
将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件treeprint中。
可以根据题目要求把程序划成6个模块,设计成菜单方式,每次执行一个模块后返回菜单。
注意,如果需要的字符集和权值数据是固定的,只要进行一次初始(I)化操作就可以了。
以后可以反复执行
(2)建立新的正文文件、(3)编码、(4)译码、(5)(6)输出。
【难点】
本程序主要用到了三个算法。
(1)哈夫曼编码
在初始化(I)的过程中间,要用输入的字符和权值建立哈夫曼树并求得哈夫曼编码。
先将输入的字符和权值存放到一个结构体数组中,建立哈夫曼树,将通过计算获得的哈夫曼编码存储到另一个结构体数组中。
(2)串的匹配
在译码(D)的过程中间,要对已经编码过的代码译码,可利用循环,将代码中与哈夫曼编码的长度相同的串与这个哈夫曼编码比较,如果相等就回显并存入文件。
(3)二叉树的遍历
在输出哈夫曼树(T)中,因为哈夫曼树也是二叉树,所以就要利用二叉树的先序遍历将哈夫曼树输出。
第四章成绩分析系统
1、教学目标
熟练掌握排序算法,采用合适的数据结构在程序中实现数据的排序要求。
2、主要内容
【问题】
录入并保存一个班级学生的多门课程的成绩,提供多种查询功能和数据统计功能。
该学生成绩分析系统要求设置下列功能:
(1)菜单驱动。
以Windows风格设计一个用户操作界面。
(2)成绩录入。
通过键盘输入每个学生的多门课程成绩,建立相应的文件input.dat。
(3)按指定的课程成绩排序。
输入指定的课程名,按指定课程的成绩进行排序,生成相应的文件并输出。
(4)按学生的平均成绩排序。
按学生的平均成绩进行排序,生成相应的文件并输出。
(5)成绩分析与统计。
统计每门课程的平均成绩、最高分、最低分、不及格人数、60~69分人数、70~79分人数、80~89分人数、90分以上人数,输出上述统计结果。
(6)按学号查询。
输入学生的学号,查询并输出该学生的各科成绩、平均成绩和总分的名次。
(7)按姓名查询。
输入学生的姓名,查询并输出该学生的各科成绩、平均成绩和总分的名次。
若有重名的学生,则要求输入学号进行查询。
【任务】
试编写一个程序,完成上述功能要求。
学生成绩的有关数据如下:
学号
姓名
数学
英语
计算机
001
王放
78
77
90
002
张强
89
67
88
003
李浩
56
66
78
004
黄鹂兵
89
86
85
005
李浩
67
88
76
006
陈利风
45
54
67
007
尚晓
78
76
70
3、重点与难点
【重点】
熟悉并掌握下列常用排序的算法和特点:
(l)插入排序。
(2)选择排序。
(3)分配排序。
(4)堆排序。
不同的排序,要求选择不同的排序方法。
熟悉并掌握下列常用查找的算法和特点:
(l)顺序查找。
(2)对分查找。
不同的查找要求选择不同的查找方法。
【难点】
堆排序方法。
四、课程教材与参考书目
1、教材
《数据结构课程设计》,苏仕华,机械工业出版社,2010年
2、参考书
[1]耿国华等编著,《数据结构—C语言描述》,西安电子科技大学出版社,2002年8月。
[2]严蔚敏,吴伟民编著,《数据结构(C语言版)》清华大学出版社,1997年4月。
[3]D.E.Knuth,theartofcomputerprogrammingvolume1/fundamewfalalgorithms;volume3/sortingandsearchingbyaddsonwesleypublishingcompany,inc1973
[4]沃思,算法+程序=数据结构,科学出版社,1985年
[5]殷人昆,数据结构(用面向对象方法与C++描述),清华大学出版社,2009年
[6]数据结构题集(C语言版),严蔚敏,清华大学出版社,2001-11
五、考核要求
1、考核方式、考核次数
考核方式:
平时表现、提交设计报告、设计作品(程序源代码)
2、总成绩合成
平时成绩(包括设计报告):
30%
设计作品:
70%
六、所需场地及主要设备
1、所需场地
计算机机房
2、所需主要设备
【硬件】
台式计算机(CPU3.0GHZ以上,内存1G以上)、网络平台(上交作业)
【软件】
TC、VC6.0等
附:
课程设计报告规范
课程设计报告的开头应给出题目、班级、姓名、学号和完成日期,并包括以下7个内容:
1.需求分析
以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?
并明确规定:
(1)输入的形式和输入值的范围;
(2)输出的形式;
(3)程序所能达到的功能;
(4)测试数据:
包括正确的输入及其输出结果和含有错误的输入及其输出结果。
2.概要设计
说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。
3.详细设计
实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:
按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数和过程的调用关系图。
4.调试分析
内容包括:
(1)调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;
(2)算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;
(3)经验和体会等。
5.用户使用说明
说明如何使用你编写的程序,详细列出每一步的操作步骤。
6.测试结果
列出你的测试结果,包括输入和输出。
这里的测试数据应该完整和严格,最好多于需求分析中所列。
7.附录
带注释的源程序。
第10页共10页
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构课程设计 数据结构 课程设计 教学大纲 2016