没有合适的资源?快使用搜索试试~ 我知道了~
数据结构 实验.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 64 浏览量
2022-07-12
14:36:20
上传
评论
收藏 144KB DOCX 举报
温馨提示
试读
26页
数据结构 实验.docx数据结构 实验.docx数据结构 实验.docx数据结构 实验.docx数据结构 实验.docx数据结构 实验.docx数据结构 实验.docx数据结构 实验.docx
资源推荐
资源详情
资源评论
计算机与信息工程学院
《 数 据 结 构 》
实验指导书
第一部分 综 述
一 简 介
数据结构是计算机相关专业的一门重要基础课,上机实验可以达到对学生所学理论基础知识进行
综合训练的目的,与课堂教学、学生自学以及习题练习等相辅相成,必不可少,是一个十分重要的教
学环节。
通常,实验题目中的问题比平时的习题练习要复杂得多,也更接近实际。实验着眼于原理与应用
相结合,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另
一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。平时的习题练习较偏
重于如何编写功能单一的“小”算法,而实验不仅要把算法改为是标准语言下的程序来实现而且要训
练软件设计的综合素质,包括问题分析、总体结构设计、用户界面设计、程序设计和程序调试的基本
技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。此外,还有很重要的一
点是:机器是比任何教师都严厉的检查者,可以看到书上的所有算法绝大多数都不能在机器上运行,
必须经过标准语言的深化与改造,在不存在任何逻辑和语法错误的情况下才能编译执行。
为了达到上述目的,本书根据数据结构教学内容与之配套安排了六个必做实验题目和多个选做题
目,训练重点在于基本的数据结构,而不强调面面俱到。各实验与教科书中各章的对应知识点具有对
应关系,在学完相应的理论知识以后即可以做对应的实验,当然有些实验可能常常涉及几部分教学内
容。
每个实验题均采取了统一的格式,由问题描述、目的要求、程序设计思路和实现、测试与调试、
实现提示和存在问题讨论等五个部分组成。问题描述旨在让学生把所做实验的理论依据进行简单的阐
述;目的要求则是让学生对实验目的用意有明确的认识和对学生的实验提供一定的指导性意见和建
议;程序设计思路要求学生学会对问题进一步求精,划出问题的边界,指出具体的参量或前提条件,
并规定该题的最低限度要求,在清晰的思路下完成程序的代码实现。测试调试部分旨在让学生充分训
练和掌握在及其上调试程序的方法和技巧,达到理论与实践相结合的目的,充分提高学生的动手能力,
是开展实验教学的重要目的之一,同时为检查学生上机作业、检查学生对课堂教学中所学理论知识的
掌握程度提供可靠的依据。存在问题讨论部分让学生对自己所做实验进行最后的总结分析探讨,充分
自我审视,找出仍然存在的问题,并给出自己的改进思路,对实现中的难点及其解法思路等问题作简
要提示。选做部分向那些尚有余力的读者提出了更好的开拓型思维机会,旨在培养学生独立分析问题、
解决问题的能力。通过讨论、分析和研究力求避免就事论事,形成良好的思想方法,尽可能寻求具有
普遍意义的解法,使得程序结构合理,容易修改扩充。
本书的一个特点是为实验制定了严格的规范。一种普遍存在的错误观念是,调试程序全凭运气。
学生花两个小时的上机时间只找出一个错误,甚至一无所获的情况是常见的。其原因在于,很多人只
认识到找错误,而没有认识到努力预先避免错误的重要性,也不知道应该如何努力。实际上,结构不
1
好、思路和概念不清的程序可能是根本无法调试正确的。严格按照实验步骤规范进行实验不但能有效
地避免上述种种问题,更重要的是有利于培养软件工作者不可缺少的科学工作方法和作风。
为每个实验提供都了完整的实验报告格式要求,在起到实验报告规格范例作用的同时,还提供了
很多有益的东西,比如,基于数据类型的系统划分方法;递归算法设计方法和技巧;对于有天然递归
属性的问题如何构造非递归算法;以及所提倡的程序设计风格等。
二 实验步骤
随着计算机性能的提高,它所面临的软件开发的复杂度也日趋增加。然而,编制一个10,000行的
程序的难度绝不仅仅是一个5,000行的程序两倍,因此软件开发需要系统的方法。一种常用的软件开
发方法,是将软件开发过程划分为分析、设计、实现和维护四个阶段。虽然数据结构课程中的实验题
的复杂度远不如(从实际问题中提出来的)一个“真正的”软件,但为了培养一个软件工作者所应具备
的科学工作的方法和作风,我们制订了如下所述完成实习的五个步骤:
(一)问题分析和任务定义
通常,实验题目的陈述比较简洁,或者说是有模棱两可的含义。因此,在进行设计之前,首先应
该充分地分析和理解问题,明确问题要求做什么,限制条件是什么。注意:本步骤强调的是做什么,
而不是怎么做。对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回
答。例如:输入数据的类型、值的范围以及输入的形式;输出数据的类型、值的范围及输出的形式;
若是会话式的输入,则结束标志是什么?是否接受非法的输入?对非法输入的回答方式是什么等。这
一步还应该为调试程序准备好测试数据,包括合法的输入数据和非法形式的输入数据。
(二)数据类型和系统设计
在设计这一步骤中需分逻辑设计和详细设计两步实现。逻辑设计指的是,对问题描述中涉及的操
作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数
据类型;详细设计则为定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系
统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基
本操作的规格说明尽可能明确具体。作为逻辑设计的结果,应写出每个抽象数据类型的定义(包括数
据结构的描述和每个基本操作的规格说明),各个主要模块的算法,并画出模块之间的调用关系图。
详细设计的结果是对数据结构和基本操作的规格说明作出进一步的求精,写出数据存储结构的类型定
义,按照算法书写规范用类C语言写出函数形式的算法框架。在求精的过程中,应尽量避免陷入语言
细节,不必过早表述辅助数据结构和局部变量。
(三)编码实现和静态检查
编码是把详细设计的结果进一步求精为程序设计语言程序。程序的每行不要太长。每个函数体,
即不计首部和规格说明部分,一般不要超过40行,最长不得超过60行,否则应该分割成较小的函数。
要控制订语句连续嵌套的深度。其他要求参见习题集的算法书写规范。如何编写程序才能较快地完成
调试是特别要注意的问题。对于编程很熟练的读者,如果基于详细设计的伪码算法就能直接在键盘上
输入程序的话,则可以不必用笔在纸上写出编码,而将这一步的工作放在上机准备之后进行,即在上
机调试之前直接用键盘输入。
然而,不管你是否写出编码的程序,在上机之前,认真的静态检查是必不可少的。多数初学者在
编好程序后处于以下两种状态之一:一种是对自己的“精心作品”的正确性确信不疑;另一种是认为
上机前的任务已经完成,纠查错误是上机的工作。这两种态度是极为有害的。事实上,非训练有素的
程序设计者编写的程序长度超过50行时,极少不含有除语法错误以外的错误。上机动态调试决不能代
替静态检查,否则调试效率将是极低的。
静态检查又叫静态执行程序,指的是用你的大脑作为“计算机”对于某个假设的实例进行分析,
2
一步步的模拟执行。主要有两种方法,一是用一组测试数据手工执行程序(通常应先分模块检查);
二是通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑,在这个过程中再加入一些注解和
断言。如果程序中逻辑概念清楚,后者将比前者有效。
(四)上机准备和上机调试
上机准备包括以下几个方面:
(1)高级语言文本(体现于编译程序用户手册)的扩充和限制。例如,常用的 BorlandC(C++)和
MicrosoftC(C++)与标准C(C++)的差别,以及相互之间的差别。
(2)如果使用C或C++语言,要特别注意与教科书的类C语言之间的细微差别,要知道类C语言的很
多部分是需要用严格的计算机语言改写的。
(3)熟悉机器的操作系统和语言集成环境的用户手册,尤其是最常用的命令操作,以便顺利进行
上机的基本活动。
(4)掌握调试工具,考虑调试方案,设计测试数据并手工得出正确结果。“磨刀不误砍柴工”。
计算机各专业的学生应该能够熟练运用高级语言的程序调试器DEBUG调试程序。上机调试程序时要带
一本高级语言教材或手册。调试最好分模块进行,自底向上,即先调试低层函数。必要时可以另写一
个调用驱动程序。这种表面上麻烦的工作实际上可以大大降低调试所面临的复杂性,提高调试工作效
率。
在调试过程中可以不断借助语言编辑环境所提供的各种功能,详细阅读系统给出的错误提示,提
高调试效率。调试中遇到的各种异常现象往往是预料不到的,此时不应“冥思苦想”,而应动手确定
疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,印出带有完整注释
的且格式良好的源程序清单和结果。
(五)总结和整理实验报告
三、实验报告规范
实验报告的开头应给出题目、班级、姓名、学号和完成日期,并包括以下七个内容:
1.需求分析
以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定:
(1)实验题目:
(2)实验目的;
(3)程序所能达到的功能。
2.概要设计
说明本程序中用到的所有(抽象)数据类型的定义、程序的流程以及各函数模块之间的层次 (调
用)关系,并且画出函数的调用关系图。
3.详细设计
实现概要设计中定义的所有数据类型,对每个操作写出伪码算法和可以上机调试的源程序代码;
4.调试分析
内容包括:
(1)调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;
(2)算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;
(3)经验和体会等。
3
5.测试结果
列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格。
6.附录
带注释的源程序。如果提交源程序软盘,可以只列出程序文件名的清单。
在以下各实验题目中都提供了实验的目的要求、实验内容和参考源程序。并且给出了可以选作的
实验题目供同学们参考选择。
值得注意的是,实验报告的各种文档资料,如:上述中的前三部分要在程序开发的过程中逐渐充
实形成,而不是最后补写(当然也可以应该最后用实验报告纸誊清)。
四 目的、要求
计算机编程中加工处理的对象是数据,而数据具有一定的组织结构,所以学习编写计算机程序仅
仅了解计算机语言是不够的,还必须掌握数据组织、存储和运算的一般方法,这是数据结构课程中学
习和研究的内容。由于数据结构的原理和算法较抽象,而该课程一般在本科低年级开设,对于计算机
程序设计知识的初学者,理解和掌握其中的原理就显得较为困难。
1、熟练掌握 C 语言的编辑、编译、调试程序。
2、会书写类 C 语言的算法,并将算法转变为程序实现。
3、正确理解各种数据结构的逻辑特性和存储表示和基本操作的算法实现。
4、有较强的逻辑分析能力。
5、针对问题的不同选择合适的数据结构,提高算法设计的能力和动手实验的技能。
6、学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、
存储结构及其相应的算法,并初步掌握算法的时间分析和空间分析的技术;
7、本课程的学习过程也是复杂程序设计的训练过程,要求学生编写的程序结构清楚、正确易读,
符合软件过程的规范,从而培养学生的数据抽象能力;
8、通过若干数据结构应用实例,引导学生学习数据类型的使用,为今后学习面向对象的程序做
一些铺垫。
五 实验基本内容及学时分配
为了达到实验目的,本课程安排了五个实习单元,训练的重点在于基本的数据结构,而不是强调
面面俱到。各实习单元与教科书的各章只具有粗略的对应关系,一个实习题常常涉及到几部分教学内
容。总为 24 学时内完成。
1、线性表 (6 学时)
(1)熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现
(2)以线性表的各种操作(建立、插入、删除等)的实现为重点
(3)通过本次实习帮助学生加深对高级语言 C 语言的使用(特别是函数参数、指针类型、链
4
剩余25页未读,继续阅读
资源评论
apple_51426592
- 粉丝: 9511
- 资源: 9659
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功