(new)《数据结构与算法》上机实验要求
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构与算法》课程实验内容与要求
一、 课程简介
本课程着重讲述①线性结构、树型结构、图等典型数据结构的逻辑特点、存储结构及其相应的基本算法。②各种查找算法③典型内部排序算法。
二、 实验的作用、地位和目的
数据结构是一门技术基础课,通过实验深刻理解各种逻辑结构、存储结构的特性,培养为实际问题分析其数据对象、基本操作,选择逻辑结构、存储结构灵活应用基本算法,设计出具有专业水准的应用程序的能力。
三、 实验方式与要求
①首先要求学生在课下完成问题分析、算法设计,基本完成程序设计。
②实验时,每位学生使用一台微机,独立调试,完成程序。
③程序调试好后,由指导教师检测运行结果,并要求学生回答相关的问题。教师评出检查成绩。
④学生记录程序的输入数据,运行结果及源程序。
⑤在一周内完成实验报告。
四、 考核方式与实验报告要求
实验成绩由指导教师根据学生的实验完成情况、源程序质量、回答问题情况、实验报告质量、实验纪律等方面给分。
学生在实验后的一周内提交实验报告。实验报告按照附件中实验报告模版书写。实验报告中应包括如下内容:
实验内容按任课教师下达的实验任务填写(具体实验题目和要求);
实验过程与实验结果应包括如下主要内容:
数据结构定义
算法设计思路简介
算法描述:可以用自然语言、伪代码或流程图等方式
算法的实现和测试结果:包括算法运行时的输入、输出,实验中出现的问题及解决办法等
算法时间复杂度分析
源程序清单与实验结果或其它说明可打印,并装订在实验报告之后。
实验报告雷同者,本次实验成绩为0分或雷同实验报告平分得分
五、 实验的软硬件环境
硬件环境:PⅡ以上微型计算机
软件环境:Windows98/2000, VC++6.0或turbo C
六、 实验内容安排
实验一线性表应用
实验时间:2017年3月9日1-2节(地点:7-219),3月10日5-6节(地点:7-215)
实验目的: 理解线性表的逻辑特点;掌握顺序表、链表存储结构,以及线性表的基本操作,如插入、删除、查找,以及线性表合并等操作在顺序存储结构和链式存储结构上的实现算法,并能够在实际问题背景下的灵活运用线性表来解决问题,实现相应算法。
每位同学可从下面题目中选择至少2题实现:其中第一题为必做题
1.一元稀疏多项式简单的计算器
1)问题描述:用线性表表示一元稀疏多项式,设计一个一元多项式运算器
2)要求: (1)采用单链表存储结构一元稀疏多项式
(2)输入并建立多项式
(3)输出多项式
(4)实现多项式加、减运算
3)分析算法时间复杂度
2. 约瑟夫环问题
1)问题描述:有编号为1, 2…n 的n 个人按顺时针方向围坐一圈,每人持有一个正整数密码。开始给定一个正整数m,从第一个人按顺时针方向自1开始报数,报到m者出列,不再参加报数,这时将出列者的密码作为m,从出列者顺时针方向的下一人开始重新自1开始报数。如此下去,直到所有人都出列。试设计算法,输出出列者的序列。
2)要求: 采用顺序和链式两种存储结构实现
3)分析算法时间复杂度
3.单链表基本操作练习
1)问题描述:在主程序中提供下列菜单:
1…建立链表
2…连接链表
3…输出链表
0…结束
2)实验要求:算法中包含下列过程,分别完成相应的功能:
CreateLinklist(): 从键盘输入数据,创建单链表
ContLinklist():将前面建立的两个单链表首尾相连
OutputLinklist():输出显示单链表
3)分析算法时间复杂度
4.单链表基本操作练习
1)问题描述:已知单链表L(带头节点)是一个递增有序表,试编写算法,删除表中值大于min且小于max的节点(若表中有这样的节点),同时释放被删节点的空间。
2)实验要求:min和max是两个给定参数。
3)分析算法时间复杂度
实验报告格式及要求:按附件中实验报告模版书写。(具体要求见四)
实验二栈与队列应用
实验时间:2017年3月20日3-4节(地点:7-219),3月23日1-2节(地点:7-220)
实验目的:1、理解栈和队列的逻辑特点;掌握栈和队列基本操作的实现,并能灵活运用栈或队列特性,综合运用程序设计、算法分析等知识解决实际问题。2、实验设置较高要求:理解组成递归算法的基本条件,理解递归算法与相应的非递归算法的区别,理解栈和队列的应用与作用。
具体实验题目:(任课教师根据实验大纲自己指定)
每位同学从下面题目中至少选择2题实现:其中1,2题中至少选择1题,3-5题中至少选择1题 1.十进制数与N进制数据的转换
1)问题描述:将从键盘输入的十进制数转换为N(如二进制、八进制、十六进制)进制数据。
2)要求: 利用顺序栈实现数制转换问题
2.表达式语法判读:
1)问题描述:假设表达式中允许包含3种括号:圆括号、方括号和大括号,编写一个算法判断表达式中的括号是否正确配对。
2)要求:输出信息提示表达式中括号是否匹配,属于哪类不匹配(如左括号多?右括号多)。
3. 算术表达式求值算法
1)问题描述:从键盘输入一个算术表达式并输出它的结果
2)要求:算术表达式可包含加、减、乘、除、十进制整数和小括号,利用栈实现
4. 停车场管理问题
1)问题描述:设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车走开,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编写程序模拟该停车场的管理。
2)要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应缴纳的费用和他在停车场内停留的时间