数据结构实验指导书(09级)
数据结构实验指导书

《数据结构》实验指导书实验一、顺序表实验目的:熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作。
实验要求:了解并熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作的实现和应用。
实验内容:编写程序实现下列的要求:(1) 设数据元素为整数,实现这样的线性表的顺序存储表示。
(2) 键盘输入10个数据元素,利用顺序表的基本操作,建立该表。
(3) 利用顺序表的基本操作,找出表中的最大的和最小的数据元素(用于比较的数据元素为整数)。
(4) * 若数据元素为学生成绩(含姓名、成绩等字段),重新编程,实现上面的要求。
要求尽可能少地修改前面的程序来得到新程序。
(这里用于比较的字段为分数)练习及思考题:(1)顺序表的操作上有什么特点?(2)不固定数据元素的个数,而通过特殊数据来标记输入数据的结束,实现这样的输入操作。
实验二、链表实验目的:熟悉链式表的逻辑特性、存储表示方法的特点和链式表的基本操作。
实验要求:了解并熟悉链式表的逻辑特性、存储表示方法和链式表的基本操作的实现和应用。
实验内容:编写程序实现下列的要求:(1) 设学生成绩表中的数据元素为学生成绩(含姓名、成绩字段),实现这样的线性表的链式存储表示。
(2) 键盘输入若干个数据元素(用特殊数据来标记输入数据的结束),利用链表的基本操作(前插或后插算法),建立学生成绩单链表。
(3) 键盘输入关键字值x,打印出表中所有关键字值<=x的结点数据。
(用于比较的关键字字段为分数)。
(4) 输入关键字值x,删除表中所有关键字值<=x的结点。
(用于比较的关键字字段为分数)。
练习及思考题:(1)不同类型的数据元素所对应的链式表在类型定义和操作实现上有什么异同?(2)有头结点的链式表,有什么特点?实验三、栈的应用实验目的:熟悉栈的逻辑特性、存储表示方法和栈的基本操作。
实验要求:了解并熟悉栈的逻辑特性、顺序和链式存储表示方法和栈的基本操作的实现和应用。
实验内容:(1) 判断一个表达式中的括号(仅有一种括号,小、中或大括号)是否配对。
《数据结构》实验指导书

《数据结构》实验指导书软件学院2011年9月概述实习目的和要求《数据结构》在计算机科学中是一门实践性较强的专业基础课,上机实习是对学生的一种全面综合训练,是与课堂听讲、自习和练习相辅相成的必不可少的一个教学环节。
实习着眼于原理与应用的结合,使学生学会把学到的知识用于解决实际问题,起到深化理解和灵活掌握教学内容的目的。
同时,通过本课程的上机实习,使学生在程序设计方法及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
实习包括的步骤1.简要描述题目要求,对问题的描述应避开算法及所涉及的数据类型,只是对所需完成的任务做出明确的陈述,例如输入数据的类型、值的范围以及输入的形式,输出数据的类型、值的范围以及输出的形式。
2.选定数据结构,写出算法,根据自顶向下发展算法的方法,首先描述算法的基本思想,然后进行算法细化,再对所设计的算法的时间复杂性和空间复杂性进行简单分析。
3.准备好上机所需的程序,选定一种程序设计语言(如C语言),手工编好上机程序,并进行反复检查,使程序中的逻辑错误和语法错误减少到最低程度。
对程序中有疑问的地方,应做出标记,以便在上机时给予注意。
4.上机输入和调试程序,在调试程序过程中除了系统的问题以外,一般应自己独立解决。
在程序调试通过后,打印输出程序清单和运行结果。
5.上机结束后,总结和整理实习报告。
实习报告的内容1.简述题目要解决的问题是什么,并说明输入和输出数据的形式。
2.简述存储结构和算法的基本思想。
3.列出调试通过的源程序。
4.列出上面程序对应的运行结果。
5.分析程序的优缺点、时空性能以及改进思想,写出心得体会。
实验一线性表一.目的与要求本次实习的主要目的是为了使学生熟练掌握线性表的基本操作在顺序存储结构和链式存储结构上的实现,提高分析和解决问题的能力。
要求仔细阅读并理解下列例题,上机通过,并观察其结果,然后独立完成后面的实习题。
二.例题[问题描述]用链表形式存储一个字符串,插入、删除某个字符,最后按正序、逆序两种方式输出字符串。
09级《数据结构》实验指导书

《数据结构实验指导书》潘向辉/吴学毅编写印包学院数字媒体技术专业2011年3月实验说明【实验环境】操作系统:Microsoft Windows XP/2000。
编程语言:C语言【实验要求】1.实验前,了解实验目的、实验内容及相关的基本理论知识,并按照实验内容要求设计程序流程,书写预习报告;2.本课程实验均为单人单组,独立完成;3.实验所用计算机固定,以便实现实验之间的延续性;4.按要求完成实验内容,在实验结束后按照格式和规范撰写实验报告。
【实验项目及学时分配】1.实验报告撰写符合格式及规范要求,详见实验报告撰写格式及规范;2.本课程实验占课程总成绩的15%。
实验(一)线性表一、实验项目名称:线性表课时:4学时二、实验要求1、掌握顺序表的定义与实现,包括查找、插入、删除算法的实现;2、掌握在各种链表结构中实现线性表操作的基本方法,能在实际应用中选用适当的链表结构;三、实验环境Widows操作系统、C语言四、实验内容(1)顺序表建立一如下表所示的学生信息表使用结构体,用顺序表完成以下内容:1.初始化线性表为空;2.依次输入数据元素;(由键盘输入)3.完成数据元素的插入、删除操作;4.取第i个数据元素;5.依次显示当前线性表中的数据元素。
(2)单链表建立一个单链表,依次输入数据元素0~9。
使用结构体,用单链表完成以下内容:1.初始化单链表;2.在单链表指定位置插入一个数据元素;3.删除指定位置的一个数据元素;4.取第i个数据元素;5.查找数据元素x 是否在单链表中;6.销毁单链表;五、思考题:在什么情况下使用顺序表比链表好?实验(二)栈和队列一、实验项目名称:栈和队列课时:2学时二、实验要求1、掌握栈的顺序表示、链表表示以及相应操作的实现。
特别注意栈空和栈满的条件;2、掌握队列的顺序表示、链表表示以及相应操作的实现。
特别是循环队列中队头与队尾指针的变化情况;三、实验环境Widows操作系统、VC6.0四、实验内容分别使用顺序循环队列和堆栈以及链式队列和堆栈编写程序:判断一个字符序列是否是回文。
09级《数据结构》实验指导书

《数据结构实验指导书》潘向辉/吴学毅编写印包学院数字媒体技术专业2011年3月实验说明【实验环境】操作系统:Microsoft Windows XP/2000。
编程语言:C语言【实验要求】1.实验前,了解实验目的、实验内容及相关的基本理论知识,并按照实验内容要求设计程序流程,书写预习报告;2.本课程实验均为单人单组,独立完成;3.实验所用计算机固定,以便实现实验之间的延续性;4.按要求完成实验内容,在实验结束后按照格式和规范撰写实验报告。
【实验项目及学时分配】【实验报告及考核】1.实验报告撰写符合格式及规范要求,详见实验报告撰写格式及规范;2.本课程实验占课程总成绩的15%。
实验(一)线性表一、实验项目名称:线性表课时:4学时二、实验要求1、掌握顺序表的定义与实现,包括查找、插入、删除算法的实现;2、掌握在各种链表结构中实现线性表操作的基本方法,能在实际应用中选用适当的链表结构;三、实验环境Widows操作系统、C语言四、实验内容(1)顺序表建立一如下表所示的学生信息表使用结构体,用顺序表完成以下内容:1.初始化线性表为空;2.依次输入数据元素;(由键盘输入)3.完成数据元素的插入、删除操作;4.取第i个数据元素;5.依次显示当前线性表中的数据元素。
(2)单链表建立一个单链表,依次输入数据元素0~9。
使用结构体,用单链表完成以下内容:1.初始化单链表;2.在单链表指定位置插入一个数据元素;3.删除指定位置的一个数据元素;4.取第i个数据元素;5.查找数据元素x 是否在单链表中;6.销毁单链表;五、思考题:在什么情况下使用顺序表比链表好?实验(二)栈和队列一、实验项目名称:栈和队列课时:2学时二、实验要求1、掌握栈的顺序表示、链表表示以及相应操作的实现。
特别注意栈空和栈满的条件;2、掌握队列的顺序表示、链表表示以及相应操作的实现。
特别是循环队列中队头与队尾指针的变化情况;三、实验环境Widows操作系统、VC6.0四、实验内容分别使用顺序循环队列和堆栈以及链式队列和堆栈编写程序:判断一个字符序列是否是回文。
数据结构实验指导书(2009)

《数据结构与算法》实验指导书马晓波秦俊平刘利民编内蒙古工业大学信息工程学院计算机系2009年3月1日《数据结构与算法》实验教学大纲三、实验目的、内容与要求实验一线性表的创建与访问算法设计(4学时)(一)实验目的数据结构于算法实验是计算机类本科学生计算机软件知识重要的实验环节,它将使学生从实践上学会用高级语言程序设计、实现复杂的数据结构,为大型软件设计奠定基础。
本实验以某种线性表的创建与访问算法设计作为实验内容,举一反三,全面、深刻掌握线性结构的实现方法,培养解决问题的能力。
(二)实验内容1、编写生成线性表的函数,线性表的元素从键盘输入;2、编写在线性表中插入元素的函数;3、编写在线性表中删除元素的函数;4、编写输出线性表的函数;5、编写主函数,调用以上各函数,以便能观察出原线性表以及作了插入或删除后线性表的屏幕输出。
方案一采用顺序存储结构实现线性表。
方案二采用单链表结构实现线性表。
(三)实验要求1、掌握线性结构的机器内表示;2、掌握线性结构之上的算法设计与实现;3、列表对比分析两种数据结构的相应操作的时间复杂度、空间复杂度,阐明产生差异的原因。
实验二二叉树的创建与访问算法设计(4学时)(一)实验目的本实验以二叉树的创建与访问算法设计作为实验内容,掌握树型结构的实现方法,培养解决负责问题的能力。
(二)实验内容1、编写生成二叉树的函数,二叉树的元素从键盘输入;2、编写在二叉树中插入元素的函数;3、编写在二叉树中删除元素的函数;4、编写遍历并输出二叉树的函数。
方案一采用递归算法实现二叉树遍历算法。
方案二采用非递归算法实现二叉树遍历算法。
(三)实验要求1、掌握树型结构的机器内表示;2、掌握树型结构之上的算法设计与实现;3、列表对比分析两种数据结构的相应操作的时间复杂度、空间复杂度,阐明产生差异的原因。
实验三图的创建与访问算法设计(4学时)(一)实验目的本实验以图的创建与访问算法设计作为实验内容,掌握图型结构的实现方法,培养解决负责问题的能力。
数据结构课程实验指导书

《数据结构》实验指导书第一部分前言一、实验的目的《数据结构》是计算机学科一门重要的专业基础课程,也是计算机学科的一门核心课程。
本课程的另一重要教学目的是训练学生进行复杂程序设计的技能和培养良好程序设计的习惯,要做到这一点,上机实习是必须的。
数据结构实验是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,实验课题中的问题比平时的习题复杂得多,也更接近实际。
实验着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,训练学生实际动手进行程序设计和调试程序的能力,加深对数据结构相关概念和算法的理解。
通过完成本实验课程的实验,学生应学会并掌握本课程的基本和重点知识,深刻理解逻辑结构、物理结构和算法设计之间的关系,初步学会算法分析的方法,并能在一定范围内运用所掌握的分析方法进行算法分析,培养软件工作所需要的动手能力和作为一个软件工作者所应具备的科学工作方法和作风。
二、实验前的准备工作1.每个学生需配备一台计算机,操作系统需Windows2000/XP以上版本,软件需Visual C++6.0以上版本。
2.实验前要求学生按实验要求编写好相关实验程序,准备上机调试运行。
三、实验的步骤(一)建立一个文件夹,如“数据结构”,用来存放自己的所有实验程序,在该文件夹中建立子目录用来存放每个项目(一个子目录一个项目),如“顺序表”,项目中需要的所有文件都存在该文件夹中。
(二)新建一个项目文件1.双击Visual C++ 6.0快捷图标,进入Visual C++ 6.0集成开发环境;或者点击“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”进入Visual C++ 6.0集成开发环境。
2.单击“File”菜单,选择“New”命令3.创建一个项目文件并保存在项目所在文件夹中;3. 创建源程序文件并保存在项目所在文件夹中;4.输入源程序;5.单击“保存”按钮保存源程序。
数据结构实验指导书及其答案pdf
引言概述正文内容
1.实验环境配置
1.1硬件要求
计算机硬件配置要求
操作系统要求
附加硬件设备要求(如虚拟机等)
1.2软件要求
编程语言要求(如C/C++、Java等)开发环境配置(如IDE、编译器等)1.3实验库和工具
实验需要使用的库文件和工具
如何获取和配置实验库和工具
2.实验内容介绍
2.1实验目标和背景
数据结构实验的作用和意义
实验背景和相关应用领域介绍
2.2实验概述
实验内容的大致流程和步骤
实验中可能遇到的问题和挑战
2.3实验要求
对学生实验流程和实验结果的要求
实验过程中需要注意的事项和技巧
3.实验步骤
3.1实验准备
配置实验环境
获取实验所需数据和文件
3.2实验具体步骤
根据实验要求将数据结构知识应用到具体问题中根据实验要求实现相应的算法和数据结构
3.3实验示例代码
提供示例代码以供学生参考和学习
解析示例代码中的关键步骤和实现细节
4.实验答案
4.1实验题目
实验题目及相关说明
确定实验的具体要求和目标
4.2实验答案解析
对实验答案的具体实现进行解析
对实验中可能遇到的问题和错误进行分析和解决4.3实验答案示例
提供实验答案的示例代码
解析实验答案中的关键实现步骤和说明
5.实验总结
5.1实验成果评估
对学生实验成果进行评估
分析实验结果的优点和不足
5.2实验心得
学生对本次实验的收获和感想
学生对未来实验的建议和展望
总结。
数据结构实验指导书
数据结构实验指导书实验顺序表的基本操作一、实验目的.掌握使用上机调试线性表的基本方法;.掌握线性表的基本操作:插入、删除、查找等运算在顺序存储结构上的实现。
二、实验内容顺序表的基本操作的实现三、实验要求.仔细阅读和理解本实验的程序。
.上机运行本程序。
(源程序)四、写出该程序的功能和运行结果。
五、实验总结(在实验中遇到了哪些问题,如何解决的)六、实验评价(教师)实验线性表在链式存储结构下的基本操作一、实验目的.掌握使用上机调试线性表的基本方法;.掌握线性表的基本操作:插入、删除、查找等运算在链式存储结构上的实现。
二、实验内容线性表在链式存储结构下的基本操作三、实验要求.仔细阅读和理解实验中给出的程序。
并据此写出线性表的各种基本操作在链式存储结构上的程序。
.上机运行写出的程序,并且独立调试通过。
(源程序)四、写出该程序的功能和运行结果。
五、实验总结(在实验中遇到了哪些问题,如何解决的)六、实验评价(教师)实验栈的基本操作一、实验目的.掌握使用上机调试栈的基本方法;. 深入了解栈的特性,掌握栈的各种基本操作。
二、实验内容栈在顺序存储结构下的各种基本操作三、实验要求.仔细阅读和掌握本实验的算法。
.上机将本算法实现。
并据此写出栈的各种基本操作在顺序存储结构上的程序。
.上机运行写出的程序,并且独立调试通过。
(源程序)四、写出该程序的功能和运行结果。
五、实验总结(在实验中遇到了哪些问题,如何解决的)六、实验评价(教师)实验队列的基本操作一、实验目的. 深入了解队列的特性,掌握队列的各种基本操作。
二、实验内容队列在链式存储结构下的基本操作三、实验要求.仔细阅读和掌握本实验的算法。
.上机将本算法实现。
并据此写出队列的各种基本操作在链式存储结构上的程序。
.上机运行写出的程序,并且独立调试通过。
(源程序)四、写出该程序的功能和运行结果。
五、实验总结(在实验中遇到了哪些问题,如何解决的)六、实验评价(教师)实验串及其应用一、实验目的:本次实验的目的是熟悉串类型的实现方法和文本模式匹配方法。
2009级数据结构课程设计任务书-总则
2009级数据结构课程设计任务书课程设计教学目的数据结构是计算机专业的核心课程,是计算机科学的算法理论基础和软件设计的技术基础。
数据结构是实践性很强的课程。
课程设计是加强学生实践能力的一个强有力手段。
本课程属于集中实践教学环节,是在学习了C语言、面向对象程序设计(C++)和数据结构后开设的。
要求学生掌握数据结构的应用、算法的编写、类C语言的算法转换成C(C++,Java)程序并上机调试的基本方法。
课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。
严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用:1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
设计要求1、学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。
有问题及时主动通过各种方式与教师联系沟通。
每个学生必须独立完成;2、课程设计时间为2周;3、设计语言不限;鼓励学生采用GUI设计;4、充分利用课余时间完成源程序和课程设计报告等文档书写工作,上机时带上源程序、数据结构教材、C++语言教材。
5、上机任务1)选择合适的数据结构,并定义数据结构的结构体;2)根据程序所要完成的基本要求和程序实现提示,设计出完整的算法;3)设计出主程序或界面,使其成为完整的程序。
6、无论在校外、校内,都要严格遵守学校的学习和劳动纪律、规章制度,学生有事离校必须请假。
课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,其成绩按不及格处理。
7、学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。
《数据结构》实验指导书(有代码)
数据结构实验指导书东华大学计算机科学与技术学院2009年9月目录前言 (1)一、概述 (1)二、实验步骤 (2)三、实验报告规范 (5)四、算法书写规范 (6)五、参考书目 (9)实验〇顺序表与链表 (10)实验〇实验报告示例 (12)实验一线性表 (25)实验报告示例:集合的并、交和差运算 (28)实验二栈和队列 (42)实验报告示例:迷宫问题 (45)实验三树和二叉树 (57)实验四图 (60)实验五查找 (63)实验六排序 (65)实验七综合设计性实验——航班信息的查询与检索 (67)前言一、概述上机实验是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,实验题中的问题比平时的习题复杂得多,也更接近实际。
实验着眼于原理与应用的结合点,使读者学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。
平时的练习较偏重于如何编写功能单一的“小”算法,而实验题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。
此外,还有很重要的一点是:机器是比任何教师都严厉的检查者。
为了达到上述目的,本指导书安排了七个主实验单元(其中除实验0作为预备练习,训练数组和链表的编程方法和编程技巧),其它各单元的训练重点在于基本的数据结构,而不强调面面俱到。
各实验单元与教科书的各章只具有粗略的对应关系,一个实验题常常涉及几部分教学内容。
在每个实验单元中安排有难度不等的实验题,经验表明,如果某题的难度略高于自己过去所对付过的最难题目的难度,则选择此题能够带来最大的收益。
切忌过分追求难题或者容易的题目。
一些实验题采取了统一的格式(其余的实验题由于比较简单,没有这么详细列出来,读者可举一反三),由问题描述、基本要求、测试数据、实现提示和选做内容五个部分组成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构作业和实验指导书数据结构课程组工业大学计算机学院2011年3月目录第1章概述1.1 课程、教材和实验1.2 作业和实验安排第2章算法设计实验和上机2.1 数据结构习题概述2.2 算法设计的上机作业要求2.3 算法设计上机作业第3章抽象数据类型的实现3.1 实验概要3.2 实验目的3.3 预习与参考3.4 实验要求和设计指标3.5 实验仪器设备和材料3.6 调试及结果测试3.7 考核形式3.8 实验报告要求3.9 思考题3.10 示例第4章课程设计4.1 课程设计概述4.2 课程设计时间和容4.3 课程设计步骤4.4 课程设计报告例4.5 课程设计考核形式和评分标准第1章概述1.1 课程、教材和实验数据结构是计算机科学的算法理论基础和软件设计的技术基础,主要研究信息的逻辑结构及其基本操作在计算机中的表示和实现。
数据结构不仅是计算机专业的核心课程,而且已成为其他理工专业的热门选修课。
课程的教学要求之一是训练学生进行复杂程序设计的技能和培养良好程序设计的习惯, 其重要程度决不亚于知识传授。
因此,在数据结构的整个教学过程中, 完成习题作业和上机实习是两个至关重要的环节。
习题的作用在于帮助学生深入理解教材容, 巩固基本概念, 达到培养良好程序设计能力和习惯的目的。
从认知的程度划分,数据结构的习题通常可分为三类:基础知识题、算法设计题和综合实习题。
基础知识题主要是检查对概念知识的识记和理解,一般可作为学生自测题。
算法设计题的目的是练习对原理法的简单应用,多数是要求在某种数据存储结构上实现某一操作,是数据结构的基础训练,构成了课外作业的主体。
综合实习题则训练对知识的综合应用和软件开发能力,主要是针对具体应用问题,选择、设计、和实现抽象数据类型(ADT)的可重用模块,并以此为基础开发满足问题要求的小型应用软件,应将其看作软件工程的综合性基础训练的重要一环,给予足够的重视。
本实验指导书为采用下列教材的数据结构课程而编写:[1] 蔚敏,伟民. 《数据结构》(C语言版,含光盘). 清华大学出版社,2002.9[2] 蔚敏,伟民. 《数据结构题集》(C语言版). 清华大学出版社,1999.2其中,《数据结构题集》实际上是一本较全面的学习和实验指导书。
本实验指导书根据教学计划给予一些补充,与上述两本教材配合使用。
《数据结构题集》的第一篇为习题篇,含有三百余道习题,组织成十二章,分别对应教科书中各章容,并在每章之前给出该章的容提要和学习要求。
这些习题是作者在多年教学过程中所积累资料的基础上,参考大量国外教材之后精心设计而成的。
书中对特别推荐的题目作了标记,并对每道习题的难易程度按五级划分法给出了难度系数。
第二篇为实习篇,分别以抽象数据类型、线性表、栈和队列、串、数组和广义表、树和图以及查找和排序为核心,设置了七组上机实习题,每组有3至9个题目供学生自由选择。
期望这些实习题能对习题起到良好的扩充作用,使学生受到涉及“从问题到程序”的应用软件设计的完整过程的综合训练,培养合作能力,成为将来进行软件开发和研究工作的“实践演习”。
数据结构是实践性很强的课程,光是“听”和“读”是绝对不够的。
在努力提高课堂教学的同时,必须大力加强对作业实践环节的要求和管理。
国外先进院校一般都要求修读数据结构的学生每应不少于4个作业机时,而且有一套格的作业和实习规和成绩评定标准,形成行之有效的教学质量保证体系。
《数据结构题集》强调规化在算法设计基本训练中的重要地位。
在习题篇中给出了算法书写规,在实习篇中给出了实习步骤和实习报告的规。
教学经验表明,格实施这些貌似繁琐的规,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将能起到显著的促进作用。
数据结构及其算法的教学难点在于它们的抽象性和动态性。
虽然在书本教材和课堂授课(板书或投影胶片)中采用图示可以在一定程度上化抽象为直观,但很难有效展现数据结构的瞬间动态特性和算法的作用过程。
在随教科书配发的光盘中,“数据结构的算法动态模拟辅助教学软件DSDEMO”是为学习并掌握数据结构中各类典型算法而开发的一个辅助教学软件,可对教科书中八十余个典型算法进行动态交互式跟踪演示,在算法执行过程中实现数据结构和算法的动态同步可视化,使学生获得仅从教材文字说明中无法获得的直观知识。
软件既可用于课堂讲解演示,又能供个人课外反复观察、体会和理解,对提高教学质量和效率有显著效果。
在习题篇的每一章列举了与该章相关的算法清单,并在《数据结构题集》附录中提供该软件完整的使用说明。
1.2 作业和实验安排根据教学计划,数据结构课程的实验和上机由三部分构成:1.算法设计实验和上机(30机时)在“数据结构算法设计作业系统”上机完成40道必做题,学有余力的同学还可以选做另外40道选做题。
2.抽象数据类型的实现(6学时设计性实验)实现一个抽象数据类型,并对所采用的存储结构和相关操作的实现进行讨论。
3.课程设计(一综合性实验)完成《数据结构题集》中的一至两个实习题。
第2章算法设计实验和上机2.1 数据结构习题概述《数据结构题集》把数据结构的习题分为“基础知识题”和“算法设计题”两类。
“基础知识题”主要供学生进行自测和复习之用,目的是帮助学生深化理解教科书的容,澄清基本概念、理解和掌握数据结构中分析问题的基本法和算法要点,为完成算法设计题做准备。
“算法设计题”则侧重于基本程序设计技能的训练,相对于实习题而言,这类编程习题属于偏重于编写功能单一的“小”程序的基础训练,然而,它是进行复杂程序设计的基础,是本课程习题作业的主体和重点。
各章的题量根据教学容的多少和重要程度而定,几乎对教科书的每一小节都安排了对应的习题。
但对每个学生来说,不必去解全部习题,而只须根据自己的情况从中选择若干求解即可。
为了表明题目的难易程度,便于学生选择,在每个题的题号之后注了一个难度系数,难度级别从①至⑤逐渐加深,其区别大致如下:难度系数为①和②的习题以基础知识题为主;难度系数为③的习题以程序设计基础训练为主要目的,如强化对“指针”的基本操作的训练等;习题中也收纳了不少难题,其难度系数设为④和⑤,解答这些题可以激起学习潜力较大的学生的兴趣,对广泛开拓思路很有益。
但习题的难度系数也只是一个相对量,学生的水平将随学习的进展而不断提高,因此没有必要去比较不同章节的习题的难度系数,此外,该难度系数值的假设是以学生没有参照习题的解答或提示为前提的。
“循序渐进”是最基本的学习原则。
学习者不应该片面追求难题。
对于解难度系数为i的习题不太费力的学生,应试试难度系数为i+1的习题,但不要把太多的时间浪费在难度系数为i+2的习题上。
“少而精”和“举一反三”是实践证明行之有效的。
解答习题应注重于“精”,而不要求“多”。
为此,在一些值得向学生推荐的“好题”题号前加注了标记◆。
把握住这些“关键点”,就把握住了数据结构习题、乃至数据结构课程的总脉络。
2.2 算法设计的上机作业要求1.使用Anyview C语言和算法书写规写出书面作业的算法(函数),作为上机前的准备。
需要强调的是“算法的可读性”。
算法是为了让人来读的,而不是供机器读的。
初学者总是容易忽视这一点。
算法的真正意图主要在于提供一种在程序设计者之间交流解决问题法的手段。
因此,可读性具有头等的重要性。
不可读的算法是没有用的,由它得到的程序极容易产生很多隐藏很深的错误,且难以调试正确。
一般地说,宁要一个可读性好、逻辑清晰简单、但篇幅较长的算法,也不要篇幅较小但晦涩难懂的算法。
算法的正确性力求在设计算法的过程中得到保证,然而一开始做不到这一点也没多大关系,可以逐步做到。
算法设计的正确法是:首先理解问题,明确给定的条件和要求解决的问题,然后按照自顶向下,逐步求精,分而治之的策略逐一地解决子问题,最后格按照和使用本章后面提供的算法书写规和类C语言完成算法的最后版本。
按照规书写算法是一个值得高度重视的问题。
在基础训练中就贯彻这一规,不但能够有助于写出“好程序”,避免形成一系列难以纠正且遗害无穷的程序设计坏习惯,而且能够培养软件工作者应有的谨的科学工作作风。
2.对函数进行静态检查修改,形成准备上机的程序文本。
多数初学者在编好程序后处于以下两种状态之一:一种是对自己的“精心作品”的正确性确信不疑;另一种是认为上机前的任务已经完成,查纠错误是上机的工作。
这两种态度是极为有害的。
事实上,非训练有素的程序设计者编写的程序长度超过50行时,极少不含有除语法错误以外的错误。
上机动态调试决不能代替静态检查,否则调试效率将是极低的。
静态检查主要有两种法,一是用一组测试数据手工执行程序(通常应先分模块检查);二是通过阅读或给别人讲解自己的程序而深入全面地分析理解程序逻辑,在这个过程中再加入一些注解和断言。
如果程序中逻辑概念清楚,后者将比前者有效。
3.在“Anyview C数据结构算法设计作业系统”编辑提交程序,并在系统的自动测试和提示下,调试程序,直到能通过系统的测试。
“Anyview C数据结构算法设计作业系统”提供了程序可视化运行和调试的环境,为进行数据结构教学的师生提供了算法设计作业程序的可视化自动测试环境。
可在该集成环境编辑C源程序,并对其进行可视化运行、分析和调试。
通过设置断点、单步或变换速度的连续运行,可在多个窗口上动态观察程序执行时的数据变量的物理和逻辑2D或3D视图,使得程序运行期间本来不可见的程序对数据的处理过程和数据之间的动态抽象关系全部可视化。
在提交算法设计作业程序时,系统自动进行可视化测试,评判作业程序的正确性。
通过对比“标准结果视图”和“作业结果视图”,作业者可对自己的程序进行直观的分析和排错。
关于该作业系统的使用,请参阅系统的帮助文档。
在调试过程中可以不断借助系统的可视DEBUG的各种功能,提高调试效率。
调试中遇到的各种异常现象往往是预料不到的,这时不应“苦思冥想”,而应动手确定疑点,通过修改程序来证实它或绕过它。
4.在调试程序的过程中,做好调试笔记,记录心得体会。
调试正确后,认真整理源程序及其注释,记录带有完整注释的且格式良好的源程序清单和结果。
一道算法设计作业文档包括:(1)上机前编写并经过静态检查的程序文本;(2)调试笔记;(3)最后程序文本,及通过时间。
2.3 算法设计上机作业1.作业容和机时40道必做题,40道选做题。
每年作适当调整更换。
6个课实验机时,教师现场指导答疑。
24个课外训练机时,实验教师指导答疑。
学生平时可以在互联网上登录系统,做选做题。
2.算法设计题目文档系统为每道算法设计题提供一个题目文档,包括以下容:(1)题目;(2)算法的函数原型;(3)可用的类型定义和函数原型。
做题前,必须仔细阅读题目文档,正确理解题目和做题要求。
第3章抽象数据类型的实现3.1 实验概要实验项目名称: 抽象数据类型的实现实验项目性质: 设计性实验所属课程名称: 数据结构实验计划学时: 63.2 实验目的对某个具体的抽象数据类型,运用课程所学的知识和法,设计合理的数据结构,并在此基础上实现该抽象数据类型的全部基本操作。