(完整版)数据结构实验报告格式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构课程实验》大纲
一、《数据结构课程实验》的地位与作用
“数据结构”是计算机专业一门重要的专业技术基础课程,是计算机专业的一门核心的关键性课程。本课程较系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了常用的多种查找和排序技术,并做了性能分析和比较,内容非常丰富。本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。
由于以下原因,使得掌握这门课程具有较大的难度:
(1)内容丰富,学习量大,给学习带来困难;
(2)贯穿全书的动态链表存储结构和递归技术是学习中的重点也是难点;
(3)所用到的技术多,而在此之前的各门课程中所介绍的专业性知识又不多,因而加大了学习难度;
(4)隐含在各部分的技术和方法丰富,也是学习的重点和难点。
根据《数据结构课程》课程本身的技术特性,设置《数据结构课程实验》实践环节十分重要。通过实验实践内容的训练,突出构造性思维训练的特征, 目的是提高学生组织数据及编写大型程序的能力。实验学时为18。
二、《数据结构课程实验》的目的和要求
不少学生在解答习题尤其是算法设计题时,觉得无从下手,做起来特别费劲。实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。
为了帮助学生更好地学习本课程,理解和掌握算法设计所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所用到的一些技术。数据结构中稍微复杂一些的算法设计中可能同时要用到多种技术和方法,如算法设计的构思方法,动态链表,算法的编码,递归技术,与特定问题相关的
技术等,要求重点掌握线性链表、二叉树和树、图结构、数组结构相关算法的设计。在掌握基本算法的基础上,掌握分析、解决实际问题的能力。
三、《数据结构课程实验》内容
课程实验共18学时,要求完成以下六个题目:
实习一约瑟夫环问题(2学时)
用循环链表实现约瑟夫环问题,熟悉链表结构的使用。
实习二停车场管理(4学时)
利用栈和队列模拟停车场管理,学习利用栈和队列解决实际问题。
实习三二叉树基本操作(3学时)
创建、遍历、插入、删除、显示二叉树,通过二叉树的基本操作,
掌握树结构的处理方法。
实习四图的基本操作(3学时)
分别用邻接矩阵和邻接表实现以下操作:
图的创建、遍历、插入、删除、最短路径。
熟悉图的常用存储结构和基本操作。
实习五哈希表设计(3学时)
给定30个人的姓名,用除留余数法构造哈希函数,用线性探测再散列法处理
冲突,构造哈希表,掌握哈希表的设计与使用。
实习六常用排序算法的对比分析(3学时)
分别实现直接插入排序、冒泡排序、简单选择排序、希尔排序、快速排序、
堆排序,并随机生成30个数,比较各算法的时、空性能和稳定性。
掌握常用排序算法的特点,以便根据实际情况选择使用。
四、《数据结构课程实验》考核方式
采用上机情况、程序质量、实习报告相结合的形式,满分为100分。
1.上机情况(30%)
包括出勤情况、调试表现、是否上网、玩游戏。
2.程序质量(50%)
3.实习报告(20%)
实习一线性表
本次实习的主要目的在于熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉各种链表的操作为侧重点。通过本次实习还可帮助读者复习高级语言的使用方法。
约瑟夫环
[问题描述]
约瑟夫(Joeph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。
[基本要求]
利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号。
[测试数据]
m的初值为20;密码:3,1,7,2,4,8,4(正确的结果应为6,1,4,7,2,3,5)。[实现提示]
程序运行后首先要求用户指定初始报数上限值,然后读取各人的密码。设n≤30。
[选作内容]
向上述程序中添加在顺序结构上实现的部分。
长整数运算
[问题描述]
设计一个程序实现两个任意长的整数求和运算。
[基本要求]
利用双项循环链表实现长整数的存储,每个结点含一个整型变量。任何整型变量的范围是-(215-1)~(215-1)。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。
[测试数据]
(1) 0;0;应输出“0”。
(2);;应输出“”。
(3); 0000;应输出“01”。
(4);;应输出“0”。
(5);;应输出“1”。
[实现提示]
(1)每个结点中可以存放的最大整数为215-1=32767,才能保证两数相加不会溢出。但若这样存,即相当于按32768进制数存,在十进制数与32768进制数之间的转换十分不方便。故可以在每个结点中仅存十进制数的4位,即不超过9999的非负整数,整个链表视为万进制数。
(2)可以利用头结点数据域的符号代表长整数的符号。用其绝对值表示元素结点数目。相加过程中不要破坏两个操作数链表。两操作数的头指针存于指针数组中是简化程序结构的一种方法。不能给长整数位数规定上限。
[选作内容]
修改上述程序,使它在整型量范围是-(2n-1)~(2n-1)的计算机上都能有效地运行。其中,n是由程序读入的参量。输入数据的分组方法可以另行规定。
实习二栈、队列与递归算法设计
仅仅认识到栈和队列是两种特殊的线性表是远远不够的,本次实习的目的在于使读者深入了解栈和队列的特征,以便在实际问题背景下灵活运用它们;同时还将巩固这两种结构的构造方法,接触较复杂问题的递归算法设计。
停车场管理
[问题描述]