




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构实验指导书计算机学院数据结构课程组2007-9前言计算机编程中加工处理的对象是数据,而数据具有一定的组织结构,所以学习计算机编程仅仅了解计算机语言是不够的,还必须掌握数据的组织、存储和运算的一般方法,这便是数据结构课程中所研究的内容,也是我们编写计算机程序的重要基础,由于它对计算机学科起到承前启后的作用,因此本课程被列为计算机等相关专业最重要的专业基础课;同时数据结构是计算机专业教学的一门核心课程。计算机各领域都要用到各种数据结构,而且要从事计算机科学与技术工作,尤其是计算机领域的软件开发工作,必须具备较强的数据结构基础。数据结构课程内容丰富、学习量大,实践性强;隐含在各部分内容中的方法和技术多;算法设计具有动态性和抽象性等特点,看懂听明白与掌握会应用之间有相当大的一段距离。所以学生必须多实践才能进一步加深对课程的理解,理解和掌握算法设计所需的方法和技术,为整个专业学习打下良好的基础。实验一 线性表的基本操作及其应用一、实验目的1、帮助读者复习C+语言程序设计中的知识。2、熟悉线性表的逻辑结构。3、熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉链表的操作为侧重点。二、实验内容本次实验提供3个题目,每个题目都标有难度系数,*越多难度越大,学生可以根据自己的情况任选一个!题目一:单链表的基本操作(*)问题描述实现带头结点的单链表的建立、求长度,取元素、修改元素、插入、删除等单链表的基本操作。基本要求(1)依次从键盘读入数据,建立带头结点的单链表; (2)输出单链表中的数据元素(3)求单链表的长度;(4)根据指定条件能够取元素和修改元素;(5)实现在指定位置插入和删除元素的功能。 测试数据由学生任意指定。题目二:约瑟夫环(*)问题描述约瑟夫(Joseph)问题的一种描述是:编号为1,2,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。基本要求利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号。测试数据由学生任意指定。如:m的初值为20;n的值为7;密码:3,1,7,2,4,8,4;(正确的输出结果应为6,1,4,7,2,3,5)。 (报告上要求写出多批数据测试结果)实现提示程序运行后首先要求用户输入初始报数上限值m,人数n,(设n30)。然后输入各人的密码。选作内容向上述程序中添加在顺序结构上实现的部分。题目三:多项式的表示及相加(*)问题描述设计一个算法,以实现一元稀疏多项式的加法运算。基本要求(1)输入并建立多项式;(2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列;(3)多项式a和b相加,建立多项式a+b。测试数据由学生任意指定。实现提示用带表头结点的单链表存储多项式。选作内容多项式a和b相减,建立多项式a-b。三、实验前的准备工作1、掌握线性表的逻辑结构。2、掌握线性表的链式存储结构。3、熟练掌握线性表的插入、删除等操作。四、实验报告要求1、实验报告要按照实验报告格式规范书写。2、实验上要写出多批测试数据的运行结果。3、结合运行结果,对程序进行分析。实验二 栈和队列的基本操作及其应用一、实验目的1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用。2、掌握栈和队列的特点,即后进先出和先进先出的原则。3、掌握栈和队列的基本运算,如:入栈与出栈,入队与出队等运算在顺序存储结构和链式存储结构上的实现。二、实验内容本次实验提供2个题目,每个题目都标有难度系数,*越多难度越大,学生可以根据自己的情况任选一个!题目一:回文判断(*)问题描述对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。基本要求(1)数据从键盘读入;(2)输出要判断的字符串; (3)利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“Yes”,否则输出“No”。测试数据由学生任意指定。题目二:商品货架管理(*)问题描述商店货架以栈的方式摆放商品。生产日期越近的越靠近栈底,出货时从栈顶取货。一天营业结束,如果货架不满,则需上货。入货直接将商品摆放到货架上,则会使生产日期越近的商品越靠近栈顶。这样就需要倒货架,使生产日期越近的越靠近栈底。基本要求设计一个算法,保证每一次上货后始终保持生产日期越近的商品越靠近栈底。实现提示可以用一个队列和一个临时栈作为周转。测试数据由学生任意指定。三、实验前的准备工作1、掌握栈的逻辑结构和存储结构。2、熟练掌握栈的出栈、入栈等操作。3、掌握队列的逻辑结构和存储结构。4、熟练掌握队列的出队、入队等操作四、实验报告要求1、实验报告要按照实验报告格式规范书写。2、实验上要写出多批测试数据的运行结果。3、结合运行结果,对程序进行分析。题目三:Rails(ACM训练题)DescriptionThere is a famous railway station in PopPush City. Country there is incredibly hilly. The station was built in last century. Unfortunately, funds were extremely limited that time. It was possible to establish only a surface track. Moreover, it turned out that the station could be only a dead-end one (see picture) and due to lack of available space it could have only one track. The local tradition is that every train arriving from the direction A continues in the direction B with coaches reorganized in some way. Assume that the train arriving from the direction A has N = 1000 coaches numbered in increasing order 1, 2, ., N. The chief for train reorganizations must know whether it is possible to marshal coaches continuing in the direction B so that their order will be a1, a2, ., aN. Help him and write a program that decides whether it is possible to get the required order of coaches. You can assume that single coaches can be disconnected from the train before they enter the station and that they can move themselves until they are on the track in the direction B. You can also suppose that at any time there can be located as many coaches as necessary in the station. But once a coach has entered the station it cannot return to the track in the direction A and also once it has left the station in the direction B it cannot return back to the station. InputThe input consists of blocks of lines. Each block except the last describes one train and possibly more requirements for its reorganization. In the first line of the block there is the integer N described above. In each of the next lines of the block there is a permutation of 1, 2, ., N. The last line of the block contains just 0. The last block consists of just one line containing 0. OutputThe output contains the lines corresponding to the lines with permutations in the input. A line of the output contains Yes if it is possible to marshal the coaches in the order required on the corresponding line of the input. Otherwise it contains No. In addition, there is one empty line after the lines corresponding to one block of the input. There is no line in the output corresponding to the last null block of the input. Sample Input51 2 3 4 55 4 1 2 3066 5 4 3 2 100Sample OutputYesNoYes题目四: Sliding Window(ACM训练题)DescriptionAn array of size n 106 is given to you. There is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves rightwards by one position. Following is an example: The array is 13-1-35367, and k is 3. Window positionMinimum valueMaximum value13-1-35367-1313-1-35367-3313-1-35367-3513-1-35367-3513-1-353673613-1-3536737Your task is to determine the maximum and minimum values in the sliding window at each position. InputThe input consists of two lines. The first line contains two integers n and k which are the lengths of the array and the sliding window. There are n integers in the second line. OutputThere are two lines in the output. The first line gives the minimum values in the window at each position, from left to right, respectively. The second line gives the maximum values. Sample Input8 31 3 -1 -3 5 3 6 7Sample Output-1 -3 -3 -3 3 33 3 5 5 6 7实验三 二叉树的基本运算一、实验目的1、使学生熟练掌握二叉树的逻辑结构和存储结构。2、熟练掌握二叉树的各种遍历算法。二、实验内容问题描述建立一棵二叉树,试编程实现二叉树的如下基本操作:1. 按先序序列构造一棵二叉链表表示的二叉树T;2. 对这棵二叉树进行遍历:先序、中序、后序以及层次遍历,分别输出结点的遍历序列;3. 求二叉树的深度/结点数目/叶结点数目;(选做)4. 将二叉树每个结点的左右子树交换位置。(选做) 基本要求从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),测试数据如输入:ABCDEGF(其中表示空格字符)则输出结果为 先序:ABCDEGF中序:CBEGDFA后序:CGEFDBA层序:ABCDEFG选作内容采用非递归算法实现二叉树遍历。三、实验前的准备工作1、掌握树的逻辑结构。2、掌握二叉树的逻辑结构和存储结构。3、掌握二叉树的各种遍历算法的实现。四、实验报告要求1、实验报告要按照实验报告格式规范书写。2、实验上要写出多批测试数据的运行结果。3、结合运行结果,对程序进行分析。实验四 哈夫曼树与哈夫曼编码一、实验目的1、使学生熟练掌握哈夫曼树的生成算法。2、熟练掌握哈夫曼编码的方法。二、实验内容问题描述已知n个字符在原文中出现的频率,求它们的哈夫曼编码。基本要求1. 初始化:从键盘读入n个字符,以及它们的权值,建立Huffman树。(具体算法可参见教材P147的算法6.12)2. 编码:根据建立的Huffman树,求每个字符的Huffman编码。对给定的待编码字符序列进行编码。选作内容. 译码:利用已经建立好的Huffman树,对上面的编码结果译码。译码的过程是分解电文中的字符串,从根结点出发,按字符0和1确定找左孩子或右孩子,直至叶结点,便求得该子串相应的字符。4. 打印Huffman树。测试数据利用教材P.148 例62中的数据调试程序。可设8种符号分别为A,B,C,D,E,F,G,H。编/译码序列为 “CFBABBFHGH”(也可自己设定数据进行测试)。三、实验前的准备工作1、掌握树的逻辑结构。2、掌握哈夫曼树的定义及生成算法。3、掌握哈夫曼编码的方法。四、实验报告要求1、实验报告要按照实验报告格式规范书写。2、实验上要写出多批测试数据的运行结果。3、结合运行结果,对程序进行分析。实验五 图的基本操作一、实验目的1、使学生可以巩固所学的有关图的基本知识。2、熟练掌握图的存储结构。3、熟练掌握图的两种遍历算法。二、实验内容问题描述对给定图,实现图的深度优先遍历和广度优先遍历。基本要求以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列。【测试数据】由学生依据软件工程的测试技术自己确定。三、实验前的准备工作1、掌握图的相关概念。2、掌握图的逻辑结构和存储结构。3、掌握图的两种遍历算法的实现。四、实验报告要求1、实验报告要按照实验报告格式规范书写。2、实验上要写出多批测试数据的运行结果。3、结合运行结果,对程序进行分析。实验六 图的应用一、实验目的1、使学生可以巩固所学的有关图的基本知识。2、熟练掌握图的存储结构。3、掌握如何应用图解决各种实际问题。二、实验内容本次实验提供2个题目,学生可以任选一个!题目一:最小生成树问题问题描述若要在n个城市之间建设通信网络,只需要假设n-1条线路即可。如何以最低的经济代价建设这个通信网,是一个网的最小生成树问题。基本要求1 利用克鲁斯卡尔算法求网的最小生成树。2 要求输出各条边及它们的权值。实现提示通信线路一旦建成,必然是双向的。因此,构造最小生成树的网一定是无向网。设图的顶点数不超过30个,并为简单起见,网中边的权值设成小于100的整数。图的存储结构的选取应和所作操作相适应。为了便于选择权值最小的边,此题的存储结构既不选用邻接矩阵的数组表示法,也不选用邻接表,而是以存储边(带权)的数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离子反应一轮复习课件
- 福建消防基础知识培训课件
- S-3-Hydroxy-17-methyloctadecanoyl-CoA-S-3-Hydroxy-17-methyloctadecanoyl-coenzyme-A-生命科学试剂-MCE
- 4-Methoxy-d3-17b-estradiol-生命科学试剂-MCE
- 禁烟禁火安全知识培训课件
- DB61T 563-2013 水质 丙烯酰胺的测定 高效液相色谱-质谱质谱法
- 2025年阅读专项试题及答案
- 上海市青浦高中2025年高三数学第一学期期末复习检测试题
- 名校学术联盟2025年数学高三上期末考试模拟试题
- 禁毒知识培训内容课件
- 2025年河北省中考物理试卷
- 物流车队轮胎管理制度
- 碳化硅项目可行性分析报告
- 安装电杆施工协议书范本
- 老年共病管理中国专家共识(2023)课件
- 惠州市惠阳区水资源综合规划 修编(2020-2035 年)
- 应聘简历模板进厂
- 工厂员工星级管理制度
- 我国汽车产业在全球价值链中的地位剖析与影响因素探究
- 衢州龙游县龙新高速公路投资有限公司招聘笔试题库2025
- 【素养目标】1.2.2 棱柱、圆柱、圆锥的展开与折叠 教案(表格式) 2024-2025学年北师大数学上册
评论
0/150
提交评论