ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:48.26KB ,
资源ID:3487080      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3487080.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(8253163数据结构JAVA指导书修改.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

8253163数据结构JAVA指导书修改.docx

1、8253163数据结构JAVA指导书修改数据结构(JAVA)实验指导书华南农业大学信息学院 软件学院杨春主编目 录第一部分 数据结构(JAVA)实验要求 1一、数据结构(JAVA)实验教学概述 11、实验教学的基本情况 12、实验教学的指导思想和教学目的 13、实验项目表 1二、数据结构(JAVA)实验教学规范 21、实验课的意义 22、实验步骤 23、实验报告(文档)规范 34、实验考核 4第二部分 数据结构(JAVA)实验 5实验一 算法设计与分析 5实验二 线性表的基本操作 6实验三 栈和队列及递归算法 8实验四 树和二叉树的基本操作 9第一部分 数据结构(JAVA)实验要求一、数据结构

2、(JAVA)实验教学概述1、实验教学的基本情况 课程总学时数:48学时; 课程总学分:3学分实验总学时:16适用专业:信息学院信息管理与信息系统专业考核方式及方法:实际操作程序运行实验报告。实验成绩、考勤及书面作业成绩组成平时成绩。平时成绩占课程总成绩30,考试成绩占课程总成绩70。成绩评定:在参考“难度系数”的基础上=90选做内容/必做内容功能完善,编程风格好,人机接口界面好; 8090必做内容功能完善,完成部分选做内容,编程风格好,人机接口界面良好;7080完成必做内容,编程风格良好;6070能完成必做内容;60未按时完成必做内容,或者抄袭(含雷同者)。2、实验教学的指导思想和教学目的1)

3、指导思想:通过由浅入深、循序渐进、精讲多练,培养学生对计算机数据结构(JAVA)的熟练使用,使学生全面了解数据结构(JAVA)的特点,熟练掌握数据结构(JAVA)的基本设计方法和工作原理。2)教学目的:使学生通过实验来验证课堂教学的理论,并学会设计一些简单的综合应用程序或小型的模拟数据结构(JAVA)。3、实验项目表必做/选做实验项目难度系数实验类型每组人数数据结构(JAVA)8个实验必做算法设计与分析验证性6线性表的基本操作验证性6栈和队列及递归算法验证性6树和二叉树的基本操作综合性6由于只学习过JAVA,所以要求对真实数据结构(JAVA)的各种数据结构进行操作,而是对你自己所设置的一些数据

4、结构(如数组、链表或队列)进行操作,来模拟实现数据结构(JAVA)中的算法。最终数据结构(JAVA)需要上交书面实验报告。二、数据结构(JAVA)实验教学规范1、实验课的意义实验是对学生的一种全面综合训练。是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,实验题中的问题比平时的习题复杂得多,也更接近实际。实验着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变活,起到深化理解和灵活掌握教学内容的目的。平时的练习较偏重于如何编写功能单一的小算法,而实验题是软件设计的综合训练,包括问题分析、总体结构设计、用

5、户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。此外,还有很重要的一点是:机器是比任何教师都严厉的检查者。2、实验步骤常用的软件开发方法,是将软件开发过程划分为分析、设计、实现和维护四个阶段。虽然数据结构(JAVA)课程中的实验题目的远不如从实际问题中的复杂程度高,但为了培养一个软件工作者所应具备的科学工作的方法和作风,也应遵循以下五个步骤来完成实验题目:1)问题分析和任务定义在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么,限制条件是什么。本步骤强调的是做什么,而不是怎么做。对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的

6、任务作出明确的回答。例如:输入数据的类型、值的范围以及输入的形式;输出数据的类型、值的范围及输出的形式;若是会话式的输入,则结束标志是什么,是否接受非法的输入,对非法输入的回答方式是什么等。还应该为调试程序准备好测试数据,包括合法的输入数据和非法形式的输入数据。2)逻辑设计和详细设计在设计这一步骤中需分逻辑设计和详细设计两步实现。逻辑设计指的是,对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型;详细设计则为定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据

7、类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。作为逻辑设计的结果,应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法。详细设计的结果是对数据结构和基本操作作出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架。在求精的过程中,应尽量避免陷入语言细节,不必过早表述辅助数据结构和局部变量。3)编码实现和静态检查编码是把详细设计的结果进一步求精为程序设计语言程序。如果基于详细设计的伪码算法就能直接在键盘上输入程序的话,则可以不必用笔在纸上写出编码,而将这一步的工作放在上机准备之后进行,即在上机调试之前直接用键盘输入。然而,不

8、管你是否写出编码的程序,在上机之前,认真的静态检查是必不可少的。静态检查主要有两种方法,一是用一组测试数据手工执行程序(通常应先分模块检查);二是通过对程序深入全面地理解程序逻辑,在这个过程中再加入一些注解和断言。如果程序中逻辑概念清楚,后者将比前者有效。4)上机准备和上机调试上机准备包括以下几个方面:(1)注意同一高级语言文本之间的差别。(2)熟悉机器的数据结构(JAVA)和语言集成环境的用户手册,尤其是最常用的命令操作,以便顺利进行上机的基本活动。(3)掌握调试工具,考虑调试方案,设计测试数据并手工得出正确结果。应该能够熟练运用高级语言的程序调试器DBBUG调试程序。(4)上机调试程序时要

9、带一本高级语言教材或手册。调试最好分模块进行,自底向上,即先调试低层函数。在调试过程中可以不断借助DEBUG的各种功能,提高调试效率。调试中遇到的各种异常现象往往是预料不到的,此时应动手确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果。5)总结和整理实验报告3、实验报告(文档)规范实验报告的开头应首先包括如下成绩单表格,并填写班级、学号、姓名、题目等信息。华 南 农 业 大 学 信 息(软 件)学 院数据结构(JAVA)综合性、设计性实验成绩单开设时间:2010学年第一学期班级学号姓名实验题目把你选择的题目写在这里成绩教师签名然后

10、,在实验报告主体中包括以下5个内容:一、实验报告撰写提纲:1、 实验目的(1分)2、 实验内容(2分)3、 实验步骤与结果 (3分)4、 源码(2分)5、 结论与讨论(2分)值得注意的是,实验报告的各种文档资料,要在程序开发的过程中逐渐充实形成,而不是最后补写。必要时可在实验报告中附部分关键源代码,但不需要附全部源代码。4、实验考核1)考核点:编程(Programming: 50分)、测试分析(Testing & Analyzing: 20分)、实验报告(Documentation: 30分);2)数据结构(JAVA)上交内容: 源代码及可执行程序(电子版);实验报告电子版; 实验报告打印稿。

11、上交时间与地点由任课教师指定。第二部分 数据结构(JAVA)实验实验一 算法设计与分析一、实验目的1 了解数据结构课程的目的,性质和主要内容,理解数据结构和算法的基本概念,熟悉算法的描述方法,算法时间复杂度和空间复杂度的分析和计算方法。二、实验要求1学习Eclipse或Myeclipse的使用技术,并撰写简单的算法程序。2编写完整程序完成下面的实验内容并上机运行。3整理并上交实验报告。三、实验内容(1) 判断已按升序排序。实现isSorted()方法判断整数(对象)数组元素是否已按升序排序,生命如下:Public static boolean isSorted(int table) /判断整数

12、数组是否已按升序排序Public static boolean isSorted(Comparable table)/ 判断对象数组是否已按升序排序(2) 数组逆置。将一个已知数组中所有元素的次序颠倒为相反次序,求算法的时间复杂度和空间复杂度。(3) 用递归算法求两个整数的最大公因数。设有不全为0的两个整数a和b,记gcd(a,b)为他们的最大公因数,即同时能整除a和b的公因数中的最大者。按照欧几里德(Euclid)的辗转相除法。gcd(a,b)具有如下性质:用递归算法实现gcd(a,b),并给下列调用:求两个整数a,b的最小公倍数;求三个数a,b,c的最大公约数实验二 线性表的基本操作一、实

13、验目的1 理解线性表的逻辑结构、两种存储结构和数据操作,熟练运用JAVA语言实现线性表的基本操作,分析各种操作算法特点和时间复杂度。二、实验要求1认真阅读和掌握和本实验相关的教材内容。2编写完整程序完成下面的实验内容并上机运行。3整理并上交实验报告。三、实验内容1)设计一个有序顺序表(元素已排序,递增或递减),实现插入、删除等操作,元素插入位置由其值决定。 2)在SinglyLinkedList或HSLingkedList类中增加下列成员方法public SinglyLinkedList(E element) /由指定数组中的多个对象构造单链表public SinglyLinkedList(S

14、inglyLinkedList list) /以单链表list构造新的单链表,复制单链表public void concat(SinglyLinkedList list) /将指定单链表list链接在当前单链表之后public Node search(E element) /若查找到指定对象,则返回结点,否则返回nullpublic boolean contain(E element) /以查找结果判断单链表是否包含指定对象public boolean remove(E element) /移去首次出现的指定对象public boolean replace(Object obj, E elem

15、ent) /将单链表中的obj对象替换为对象elementpublic boolean equals(Object obj) /比较两条单链表是否相等3)声明循环单链表类CircSinglyLinkedList,实现LList接口中的方法。4)声明双链表类DoublyLinkedList,实现LList接口中的方法。5)声明排序的双链表类。6)声明循环双链表类CHDoublelyLinkedList,实现LList接口中的方法。public class CHDoublelyLinkedList implements LList /带头结点的循环双链表类7)分别采用循环单链表、双链表或循环双链表

16、求解约瑟夫环问题,并分析各操作效率。8)使用迭代器对象实现下列方法。Public int indexOf(object obj) /返回指定对象首次出现位置,若未找到返回-1Public Boolean equals(object obj) /比较两个线性表是否相等9)多项式相加一条单链表可以表示一个一元多项式,每个结点包含三个域:指数域、系数域和后继结点链。表示多项式3x4-6x2+5x-10的单链表如图所示。给定两个多项式,实现两个多项式的相加算法。head系数 指数 域34-62 51-10010)有效管理一个1n的随机数序列,要求生成初始序列,保证序列中的元素值不重复,当增加或删除一个

17、元素的时候,使序列元素值动态更新。例如,一个MP3播放器使用速记方式播放10首歌曲,曲目播放次序就是由110组成的一个随机数序列,当增加或删除一首歌的时候,要及时更新序列中元素值,不重复播放 实验三 栈和队列及递归算法一、实验目的1 理解栈和队列抽象数据类型,掌握栈和队列的存储结构和操作实现,理解栈和队列在实际应用问题的作用。二、实验要求1进行队列的基本操作时要注意队列“先进先出”的特性。2编写完整程序完成下面的实验内容并上机运行。3整理并上交实验报告。三、实验内容(1) 使用一个栈,将十进制转换成二进制。(2) 分别用循环单链表、循环双链表结构设计队列,并讨论他们之间的差别。(3) 使用3个

18、队列分别保留手机最近10个“未接来电”、“已接来电”、“以拨电话”。(4) 走迷宫。一个迷宫如图所示,他有一个入口和一个出口,其中白色单元表示通路,黑色单元表示不通路。试寻找一条从入口到出口的路径,每一部只能从一个白色单元走到相邻的白色单元,直至出口。分别用站和队列求解问题。 入口出口(5)骑士游历骑士游历问题是指,在国际象棋的棋盘(8行*8列)上,一个马要遍历棋盘,即走到棋盘上的每一格,并且每隔只到达一次。设码在棋盘的某一位置(x,y)上,按照“走马日”的规则,下一步有8个方向走,如图所示。若给定起始位置(x0,y0),使用站和队列探索出一条马遍历棋盘的路劲。 1 2 3 4 5 6 7 8

19、 8172马6354实验四 树和二叉树的基本操作一、实验目的1 理解二叉树的定义、性质、存储结构等基本概念,掌握二叉树类的设计方法,以及遍历、插入、删除等二叉树操作的算法实现;掌握采用链式存储结构表达非线性结构的设计方法;掌握采用递归算法实现递归数据结构基本操作的设计方法。2 熟悉树的定义、表示、存储结构和遍历,具备使用树各种操作的能力。二、实验要求1复习树与二叉树的定义与基本操作方法。3编写完整程序完成下面的实验内容并上机运行。4整理并上交实验报告。三、实验内容(1)在一棵二叉链表表示的二叉树中,实现以下操作,并说明采用哪种遍历算法,其他遍历算法是否可行。 输入叶子结点。 求二叉树中叶子结点

20、个数。 将每个结点的左子树与右子树交换。 验证二叉树的性质3:n0=n2+1。 输出值大于k的结点。 已知先根和中根次序遍历序列构造二叉树。 以广义表表示构造二叉树。 判断两颗二叉树是否相等。 求结点所在的层次。 求一颗二叉树在后根次序遍历下第一个访问的结点。 复制一颗二叉树。 判断一颗二叉树是否为完全二叉树。 实现二叉树后根次序遍历的非递归算法。(2)声明三叉链表表示的二叉树类,实现二叉树的基本操作以及以下操作。 构造一颗三叉链表表示的二叉树。 返回指定结点的父母结点。 返回指定结点的所有祖先结点。 返回两结点最近的共同祖先结点。(3)在一颗中序线索二叉树中,实现以下操作。 调用求结点的前驱结点算法,按中根次序遍历一颗中序线索二叉树 。 按后根次序遍历中序线索二叉树。 在构造二叉树时进行线索化。 插入、删除操作。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1