《数据结构》课程设计教学大纲
数据结构课程设计教学大纲
数据结构课程设计大纲编号:学时:1周一、地位、作用和目的《数据结构》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强实践应用能力的培养。
本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计能力。
二、内容提要通过这次设计,要求在数据结构析逻辑特性和物理表示,数据结构的选择的应用、算法的设计及其实现等方面中深对课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
参考课题:1、运动会分数统计2、订票系统3、表达式翻译4、迷宫求解5、文章编辑6、joseph环7、排序算法的比较与分析8、赫夫曼编码/译码器9、纸牌游戏10、关键路径问题11、以队列实现的仿真技术预测理发馆的经营状况12、救护车调度模拟系统教师可根据教学和学生的实际情况,自行选择或添加课题。
要求:1、对系统进行功能模块分析、控制模块分析正确;2、数据结构设计要实用;3、算法简练,可读性好,功能比较全面;4、说明书、流程图要清楚;5、可采用面向过程或面向对象设计方法进行设计,建议用面向对象设计方法。
三、配套的主要仪器设备及台(套)数1、586以PC机80台2、Windows 98以上操作系统3、Visual C++6.0四、内容、要求与时间安排五、考核办法《数据结构》课程设计的最后成绩有以下几个方面组成:1、准备情况。
(10%)2、上机实验:出勤情况,学生的动手能力,创新精神,数据结构的合理性,程序运行情况,算法的可读性,上交程序存放的规范程度,课程设计过程进展检查情况,独立完成情况(不允许雷同),以及其它因素。
(50%)3、答辩(20%)4、课程设计报告:规范情况,总结的深刻程度。
(20%)成绩分优、良、中、及格和不及格五等。
说明:1.设计期间不得旷课、迟到、早退及做与设计内容无关的事。
数据结构课程教学大纲
课程
编号
01025016
01825064
01826064
课程
名称
(中文)数据结构
(英文)Data Structures
课
程
基
本
情
况
1.学分:4学时:40(课内学时:40实验学时:)
2.课程性质:学科基础必修课专业选修课
3.适算机原理》、《C语言程序设计》、《高等数学》
1.掌握线性表的基本概念。
2.掌握线性表的顺序存储结构和链式存储结构。
3.掌握特殊的线性表-栈和队列。
4.了解循环线性链表和双向链表。
(三)串(4学时)
1.了解串的基本概念和存储结构
2.了解串的基本运算
3.掌握串的模式匹配
(四)数组和广义表(4学时)
1.掌握数组顺序存储和链式存储结构
2.了解广义表的定义及其应用
配套
实践
环节
说明
大纲
编写
责任
人
信息与计算科学
(教研组)
戴筠(签名)
2001年06月30日
系
审核
意见
数学
(系)
顾桂定(签名)
2001年06月30日
学院
审核
意见
张金仓
(签名)
上海大学理学院(公章)
年月日
要求学生能够掌握数据的逻辑结构、物理结构以及各种结构所定义的运算和应用。对同一种逻辑结构的数据,讨论其不同的物理结构和相应的有关算法,掌握查找和排序的各种方法。
课
程
内
容
及
学
时
分
配
课
程
内
容
及
学
《数据结构课程设计》教学大纲
块的算法思路,相应流
程图的绘制。
要求学生在下周上课
前完成:
1、完成实验报告“算 投影
4 法说明”部分。下次上
计算机 课一开始就提交!
2、准备资料,开始编
写代码。
编写代码: 学生依自身情况,确定本周要完成哪
些模块的代码编写,以及测试。 四 注意:不要等到所有代码写完了,一
起测试,那样很难确定问题所在。应 局部调试通过,再逐渐加入,最终联 调。
5、凡照抄、照搬者,无论来自同学、图书、网上资源,一律视其严重程度扣分。 较严重者不及格,代码和设计报告雷同者记零分。
七、推荐教材和教学参考书
教材:
《数据结构教程(第 5 版)上机实验指导》李春葆,清华大学出版社,2017 年 8 月第 1 版.
《数据结构课程设计(第 2 版)》苏仕华.北京:机械工业出版社,2010.
完成了哪些部分,按贡献大小给出排名。 3、鼓励同学之间的讨论和相互启发,但也仅限于启发思路和解决局部疑难问题的
作用,绝不允许照抄、照搬同学的代码和设计报告。 4、参考资料包括各种图书,网上资源。课程设计离不开参考资料,但是对参考资
料的使用是在阅读理解的基础上加以借鉴,仅限于启发思路和解决局部疑难问题的作 用,绝不允许照抄、照搬的行为。
可得该部分满分的 80%
可得该部分满分的 10%
可得该部分满分的 10%
可得该部分满分的 60%
可得该部分满分的 25%
可得该部分满分的 15%
(三)参考资料的使用与抄袭行为的处罚
1、对于要求独立完成的题目必须独立完成。 2、对于难度或规模大的选题,可以在征得老师同意的情况下几个学生组成小组分 工合作完成,共同提交一份设计报告。设计报告中必须清楚的体现分工情况,注明各自
《数据结构》课程教学大纲
《数据结构》课程教学大纲一、课程概述数据结构是计算机科学与技术专业的重要基础课程之一。
本课程旨在介绍数据结构的基本概念、常用数据结构及其应用。
通过本课程的学习,学生应具备设计和实现基本数据结构的能力,能够分析并解决实际问题中的数据组织与处理需求。
二、教学目标1. 掌握数据结构的基本概念和分类。
2. 理解不同数据结构的特点、存储结构和操作方式。
3. 能够应用各类数据结构解决实际问题,并分析其性能。
4. 具备编写高质量代码的能力,考虑代码的可读性和可维护性。
5. 培养团队合作意识和解决问题的能力。
三、教学内容1. 数据结构基础1.1 数据结构的定义和作用1.2 数据结构的分类及常用术语1.3 数据结构的表示与实现方式2. 线性结构2.1 线性结构的概念和特点2.2 线性表的顺序存储结构和链式存储结构2.3 线性表的基本操作(插入、删除、查找)2.4 栈和队列的定义、基本操作以及应用3. 非线性结构3.1 树形结构的概念和特点3.2 二叉树及其存储结构(顺序存储和链式存储)3.3 二叉树的遍历(先序、中序、后序)3.4 树与森林的转换和应用4. 图结构4.1 图的定义和基本术语4.2 图的存储结构(邻接矩阵和邻接表)4.3 图的遍历(深度优先搜索和广度优先搜索)4.4 最小生成树和最短路径算法5. 查找算法5.1 查找的基本概念和分类5.2 顺序查找算法5.3 二分查找算法5.4 哈希查找算法6. 排序算法6.1 排序的基本概念和分类6.2 内部排序算法(插入排序、冒泡排序、选择排序、快速排序、归并排序)6.3 外部排序算法四、教学方法1. 集中讲述与课堂演示相结合的教学方法。
2. 利用多媒体技术展示数据结构的基本概念、实例和操作过程。
3. 提供编程实践的机会,让学生独立设计和实现各类数据结构。
4. 组织小组讨论和团队合作,解决数据结构相关问题。
五、考核方式1. 平时成绩包括课堂表现、作业、实验和参与度。
《数据结构课程设计》课程教学大纲
《数据结构课程设计》课程教学大纲注:课程类别是指学科基础课/专业课/实践环节/通识公共课/公共基础课/其他;课程性质是指通识必修/通识选修/学科必修/专业必修/专业选修/实践必修/实践选修。
一、课程目标本课程是与《数据结构》相配套的实践环节。
课程通过设计并编程实现各种数据结构的基本操作、存储,以及选用算法的时间复杂度等,进一步加深理解所学理论课的内容。
通过本课程设计,使学生对数据结构的逻辑特性和物理存储;数据结构的选择和应用;算法设计及其实现等内容加深理解;学会根据实际问题选用和设计数据结构,使理论与实践相结合。
同时使学生在程序设计方法、上机操作等基本技能及科学作风方面受到比较系统和严格的训练。
课程目标:1.能够根据具体的问题,选用合适的数据结构设计解决方案,并编程实现;2.具备对实验结果进行分析与解释并推导出有效结论的能力;3.学生在项目上机验收、撰写设计文档及课程设计报告时能清楚分析并阐述其设计思路的合理性及正确性;4.通过数据结构课程实践练习,使学生了解中国在数据库、大数据平台、数据结构算法创新与实践,数据处理规模、吞吐率、系统可靠性等方面取得的成就。
二、课程目标与教学内容和方法的对应关系教学内容对课程目标的支撑关系、教学方法如表1所示:表1教学目标与教学内容、教学方法的对应关系教学内容教学方法课程目标课程英文名Course Design for Data Structure 课程代码S050095G课程类别实践环节课程性质实践必修学分2总学时数32开课学院计算机学院开课基层教学组织国际化课程组面向专业计算机科学与技术(国际教育学院)(全英文)、软件工程(国际教育学院)(全英文)开课学期3教学内容教学方法课程目标1.线性结构:(1)约瑟夫环课堂讲授、自学、案例分析、1,2,3课堂互动、调研报告1.线性结构:(2)集合交并差课堂讲授、实践2,32.栈和队列:停车场管理课堂讲授、实践2,3,43.树形结构:哈夫曼树及编码的实现课堂讲授、自学、实践2,3,44.图形结构:校园周游课堂讲授、实践2,3,4本课程设计全部由学生自主完成,教师以答疑方式给予帮助。
《数据结构》课程教学大纲.doc
《数据结构》课程教学大纲(201402修订)课程名称:数据结构(英文):Data Structure课程性质:专业基础课适用层次:专升本学时:64 (理论教学时数:48 实践教学时数:16 )先修课程:C++程序设计一、课程的作用、地位和任务1.课程性质:本门课程是是计算机专业中一门重要的专业基础课。
用计算机解决任何问题都需要进行数据表示和数据处理,而数据表示和数据处理正是《数据结构》要研究的内容。
本课程主要介绍如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价。
2.目的和任务:通过本门课程的学习,使学生深透地理解数据结构的逻辑结构和物理结构的基本概念以及有关算法,培养基本的、良好的程序设计技能,编制高效可靠的程序,为学习操作系统、编译原理和数据库等课程奠定基础。
3、教学方法:本课程在多媒体课室授课,讲授内容制成课件,利用计算机把讲授内容与实例结合在一起,通过文字、声音、图像和动画的结合进行授课。
实践环节是强化动手能力培养及对技术细节知识掌握的重要组成部分,也是融会贯通各章知识内容的极好手段。
通过上机调试运行自编程序,熟练掌握程序设计、调试程序的方法,进一步领会程序设计的特点。
4、基本要求:1)了解数据结构及其分类、数据结构与算法的密切关系。
2)熟悉各种基本数据结构及其操作,学会根据实际问题要求来选择数据结构。
3)掌握设计算法的步骤和算法分析方法。
4)掌握数据结构在排序和查找等常用算法中的应用。
二、课程教学内容和要求(一)理论教学第一章绪论:教学内容与要求:逻辑结构与存储结构的含义1.数据的四种逻辑结构与四种存储结构2.抽象数据类型的含义3.算法的特性,4.时间复杂度与空间复杂度的含义重点与难点:数据的四种逻辑结构与四种存储结构,时间复杂度的估算及比较1.1 常用术语(重点)1.2 算法描述(重点)1.3 算法评价(重点)第二章线性表:教学内容与要求:1 线性表的含义, 2线性表的顺序存储、链式存储的各种算法重点与难点:1 线性表的插入、删除算法, 2.双向链表及循环链表的插入、删除过程2. 1 线性表的定义及抽象描述(重点)2.2 线性表的顺序存储和操作实现(重点)2.3 线性表应用举例2.4 线性表的链接存储结构(重点)2.5 线性表操作在单链表上的实现(重点)2.6 多项式计算第三章栈与队列:教学内容与要求:1栈的定义, 2栈的存储及运算实现, 3栈的应用:表达式求值4.栈与递归的实现,5.队列的定义及存储实现重点与难点:1 栈与队列的基本运算, 2 表达式求值3.1 栈与队列的定义和抽象数据类型(重点)3.2 栈与队列的顺序存储结构和操作实现(重点)3.3 栈的应用:表达式求值第四章串,教学内容与要求:1串的概念, 2串的两种存储方式, 3串的模式匹配算法重点与难点:串的模式匹配算法4.1 串的概念(重点)4.2 串的两种存储方式(重点)4.3 串的模式匹配算法第五章多维数组与广义表,本章内容安排学生自学。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》课程设计教学大纲适用专业:计算机科学与技术课程周数:1周一、大纲说明本大纲根据计算机科学与技术专业人才培养方案制订。
(一)课程设计性质课程设计是学生对课程所学知识的综合运用,它与课堂听讲、上机实验、课外练习、自学研究相辅相成,构成一个完整的课程教学体系。
(二)主要先修课程和后续课程1.先修课程:《C语言程序设计》2.后续课程:《计算机组成原理》、《操作系统》、《数据库系统原理》二、课程设计目的及基本要求《数据结构》是一门实践性强的课程,其中对算法设计和程序编写的掌握尤为重要。
学生虽然可以通过与课堂教学同步的上机实验完成相关内容的练习,但却往往局限于一些功能简单、彼此之间关系独立的算法和程序。
课程设计是一种综合训练,致力于培养学生全面、灵活的算法设计思想和较高的编程能力,为今后从事计算机开发与应用打下基础。
新世纪需要具有丰富科学知识、独立解决实际问题、有创造能力的新型人才,这也是该课程设计的最终目的。
三、课程设计内容及安排1、运动会分数统计问题描述:参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)功能要求:1).可以输入各个项目的前三名或前五名的成绩;2).能统计各学校总分,3).可以按学校编号、学校总分、男女团体总分排序输出;4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;2、一元多项式计算问题描述:能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加、相减,并将结果输入;在上交资料中请写明:存储结构、多项式相加的基本过程的算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;3、订票系统问题描述:通过此系统可以实现如下功能:1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3)订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4)退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
5)修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;4、迷宫求解问题描述:可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出;要求:在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;5、文章编辑问题描述:输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行。
要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
存储结构:使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;6、joseph环问题描述:编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。
一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。
报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。
设计一个程序来求出出列顺序。
要求:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。
测试数据:m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4,首先m=6,则正确的输出是什么?输入数据:建立输入处理输入数据,输入m的初值,n ,输入每个人的密码,建立单循环链表。
输出形式:建立一个输出函数,将正确的输出序列7、猴子选大王问题描述:一堆猴子都有编号,编号是1,2,3 ...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
输入数据:输入m,n m,n 为整数,n<m输出形式:中文提示按照m个猴子,数n个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能8、建立二叉树,层序、先序遍历(用递归或非递归的方法都可以)问题描述:要求能够输入树的各个结点,并能够输出用不同方法遍历的遍历序列;分别建立建立二叉树存储结构的的输入函数、输出层序遍历序列的函数、输出先序遍历序列的函数;9、哈夫曼树的建立问题描述:建立建立最优二叉树函数要求:可以建立函数输入二叉树,并输出其哈夫曼树在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、输入输出、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;10、纸牌游戏问题描述:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过。
输出:这时正面向上的牌有哪些?11、图的建立及输出问题描述:建立图的存储结构(图的类型可以是有向图、无向图、有向网、无向网,学生可以任选两种类型),能够输入图的顶点和边的信息,并存储到相应存储结构中,而后输出图的邻接矩阵。
12、拓扑排序问题描述:编写函数实现图的拓扑排序。
13、各种排序问题描述:对30000个随机整数,利用插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序等排序方法进行排序,并统计每一种排序上机所花费的时间。
输入的数据形式:为任何一个正整数,大小不限。
输出的形式:数字大小逐个递增的数列?14、图的遍历问题描述:对任意给定的图(顶点数和边数自定),建立它的邻接表并输出,然后利用队列的五种基本运算(置空队列、进队、出队、取队头元素、判队空)实现图的广度优先搜索周游。
15、线性表的操作问题描述:利作链表的插入运算建立线性链表,然后利用链表的查找、删除、计数、输出等运算反复实现链表的这些操作(插入、删除、查找、计数、输出单独写成函数的形式),并能在屏幕上输出操作前后的结果。
16、长整数四则运算问题描述:设计一个实现任意长的整数进行加法运算的演示程序。
基本要求:利用双向循环链表实现长整数的存储,每个结点含一个整形变量。
任何整形变量的范围是-(2^15-1) (2^15-1)。
输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。
测试数据:(1)0;0;应输出“0”。
(2)-2345,6789;-7654,3211;应输出“-1,0000,0000”。
(3)-9999,9999;1,0000,0000,0000;应输出“999(4)1,0001,0001;-1,0001,0001;应输出“0”。
(5)1,0001,0001;-1,0001,0000;应输出“1”。
(6)-9999,9999,9999;-9999,9999,9999;应输出“1,9999,9999,9998”。
(7)1,0000,9999,9999;1;应输出“1,0001,0000,0000”。
实现提示:(1)每个结点中可以存放的最大整数为32767,才能保证两数相加不会溢出,但若这样存放,即相当于按32768进制存放,在十进制与32768进制数之间的转换十分不方便,故可以在每个结点中仅存十进制的4位,即不超过9999的非负整数,整个链表表示为万进制。
(2)可以利用头结点数据域的符号代表长整数的符号。
用其绝对值表示元素结点数目。
相加过程中不要破坏两个操作数链表。
两操作数的头指针存于指针数组中是简化程序结构的一种方法。
不能给长整数位数规定上限。
17、马踏棋盘问题描述:将马随机放在国际象棋的8 8棋盘Bord[8Ⅱ8]的某个方格中,马按走棋规则进行移动。
要求每个方格上只进入一次,走遍棋盘上全部64个方格。
编制非递归程序,求出马的行走路线,并按求出的行走路线,将数字1,2,…,64依次填入�个8 8的方阵,输出之。
测试数据:由读者指定,可自行指定一个马的初始位置。
实现提示:每次在多个可走位置中选择一个进行试探,其余未曾试探过的可走位置必须用适当结构妥善管理,以备试探失败时的“回溯”(悔棋)使用。
18、校园导游咨询问题描述:(1)设计你的学校的校园平面图,所含景点不少于10个。
以图中顶点表示学校各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
(2)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
(3)为来访客人提供图中任意景点相关信息的查询。
测试数据:由读者根据实际情况指定。
实现提示:一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网。
顶点和边均含有相关信息。
19、编制一个求解迷宫通路的图形界面演示程序。
问题描述:(1)输入一个任意大小的迷宫,任设起点、终点、障碍,用栈求出一条走出迷宫的路径,并显示在屏幕上。
(2)根据用户界面提示,用键盘输入。