1、3、熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉链表的操作为侧重点。二、实验内容本次实验提供4个题目,每个题目都标有难度系数,*越多难度越大,学生可以根据自己的情况选做!题目一:单链表的基本操作(*)问题描述实现带头结点的单链表的建立、求长度,取元素、修改元素、插入、删除等单链表的基本操作。基本要求(1)依次从键盘读入数据,建立带头结点的单链表; (2)输出单链表中的数据元素(3)求单链表的长度;(4)根据指定条件能够取元素和修改元素;(5)实现在指定位置插入和删除元素的功能。 测试数据由学生任意指定。题目二:约瑟夫环(*) 问题描述约瑟夫(Joseph)问题的一种描述是:编号为1,
2、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,(设
3、n30)。然后输入各人的密码。选作内容向上述程序中添加在顺序结构上实现的部分。题目三:多项式的表示及相加(*)设计一个算法,以实现一元稀疏多项式的加法运算。(1)输入并建立多项式;(2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列;(3)多项式a和b相加,建立多项式a+b。用带表头结点的单链表存储多项式。多项式a和b相减,建立多项式a-b。题目四:Dr.Kong设计了一件艺术品(*)Dr.Kong设计了一件艺术品,该艺术品由N个构件堆叠而成,N个构件从高到低按层编号依次为1,2,,N。艺术品
4、展出后,引起了强烈的反映。Dr.Kong观察到,人们尤其对作品的高端部分评价甚多。狂热的Dr.Kong一激动,对组成该艺术品的N个构件重新组合,比如:把第6层到第12层的构件搬下来,想一想,然后整体放到剩下构件的第7层下面;过一会儿,又把第2层到第9层的构件搬下来,整体放到剩下构件的第1层下面等等。于是,Dr.Kong在进行了连续若干次“搬来搬去”后,还是这N个构件,又诞生了一件新的艺术品。编程:请输出新的艺术品最高十层构件的编号。【标准输入】 第一行: N K 表示构件的总数和“搬来搬去”的总次数第2K+1行:A B C 表示要搬动的构件(即从第A层到第B层)整个放在第C层下面;如果C等于0
5、,则要搬动的构件将放到最高层。【标准输出】由十行组成,分别为组成新艺术品的第一层到第十层构件的编号。【约束条件】(1) 10N20000 1k1000(2) 1ABN, 0CN-(B-A+1)【 样 例 】提示:样例中仅是常规的测试数据输入及对应结果,特殊情况需要全面考虑,自己设计测试数据验证算法的健壮性。标准输入(测试数据):13 36 12 12 9 010 13 8标准输出结果:6789101112234适宜于用带表头结点的单链表实现,涉及单个结点或连续多个结点的插入与删除。分别用不带头结点的单链表和顺序表实现,领会三种方法的算法设计的优缺点和时间复杂度。三、实验前的准备工作1、掌握线性
6、表的逻辑结构。2、掌握线性表的链式存储结构。3、熟练掌握线性表的插入、删除等操作。四、实验报告要求1、实验报告要按照实验报告格式规范书写。2、实验上要写出多批测试数据的运行结果。3、结合运行结果,对程序进行分析。实验二 栈和队列的基本操作及其应用1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用。2、掌握栈和队列的特点,即后进先出和先进先出的原则。3、掌握栈和队列的基本运算,如:入栈与出栈,入队与出队等运算在顺序存储结构和链式存储结构上的实现。回文判断(*)对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。(1)数据从
7、键盘读入;(2)输出要判断的字符串; (3)利用栈和队列对给定的字符串判断其是否是回文,若是则输出“Yes”,否则输出“No”。商品货架管理(*)商店货架以栈的方式摆放商品。生产日期越近的越靠近栈底,出货时从栈顶取货。一天营业结束,如果货架不满,则需上货。入货直接将商品摆放到货架上,则会使生产日期越近的商品越靠近栈顶。这样就需要倒货架,使生产日期越近的越靠近栈底。设计一个算法,保证每一次上货后始终保持生产日期越近的商品越靠近栈底。可以用一个队列和一个临时栈作为周转。舞伴问题(*)假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。若两
8、队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。【实验提示】先入队的男士或女士亦先出队配成舞伴。因此该问题具体有典型的先进先出特性,可用队列作为算法的数据结构。在算法中,假设男士和女士的记录存放在一个数组中作为输入,然后依次扫描该数组的各元素,并根据性别来决定是进入男队还是女队。当这两个队列构造完成之后,依次将两队当前的队头元素出队来配成舞伴,直至某队列变空为止。此时,若某队仍有等待配对者,算法输出此队列中等待者的人数及排在队头的等待者的名字,他(或她)将是下一轮舞曲开始时第一个可获得舞伴的人。【实验要求】 利用队列实现,存储结构采用顺序或链式均可
9、Rails(*)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
10、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
11、 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 orde
12、r 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.
13、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 requir
14、ements 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 conta
15、ins 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 correspondi
16、ng 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 36 5 4 3 2 1Sample OutputYesNo1、掌握栈的逻辑结构和存储结构。2、熟练掌握栈的出栈、入栈等操作。3、掌握队列的逻辑结构和存储结构。4、熟练掌握队列的出队、入队等操作实验三 二叉树的基本运算1、使学生熟练掌握二叉树的逻辑结构和存储结构。2、熟练掌握二叉树的各种遍历算法。二叉树的基本操作实
17、现 (必做题)建立一棵二叉树,试编程实现二叉树的如下基本操作:1. 按先序序列构造一棵二叉链表表示的二叉树T;2. 对这棵二叉树进行遍历:先序、中序、后序以及层次遍历,分别输出结点的遍历序列;3. 求二叉树的深度/结点数目/叶结点数目;(选做)4. 将二叉树每个结点的左右子树交换位置。 基本要求从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),如输入:ABCDEGF(其中表示空格字符)则输出结果为 先序:ABCDEGF中序:CBEGDFA后序:CGEFDBA层序:ABCDEFG采用非递归算法实现二叉树遍历。题目二、The Number of the Same BST(
18、选作)【Description】Many people knows binary search tree. The keys in a binary search tree are always stored in such a way as to satisfy the BST property:Let X be a node in a binary search tree. If Y is a node in the left subtree of X , then Y X. For example, It is a binary search tree. And it can be bu
19、ilt by inserting the elements of vector A= (12, 6, 3, 18, 20, 10, 4, 17, 20) sequentially. But it can also be built by the vector B= (12, 18, 17, 6, 20, 3, 10, 4, 20). Now given a vector X, then you may get a binary search tree from X. Your job is to calculate how many different vectors can build th
20、e same binary search tree. To make it easy, you should just output the number of different vectors mod 9901.【Input】Input consists of several cases. Each case starts with a line containing one positive integer n, which is the length of test vector. The integer n is less than 20. Following this there
21、will be n positive integers, which are less then 1000, on the next line. The input will end with a case starting with n = 0. This case should not be processed.【Output】For each test case, print a line with a single integer, which is the number of different vectors mod 9901.【Sample Input】2 1 35 6 3 18
22、 20 10 4 17 20【Sample output】1681、掌握树的逻辑结构。2、掌握二叉树的逻辑结构和存储结构。3、掌握二叉树的各种遍历算法的实现。实验四 哈夫曼树与哈夫曼编码1、使学生熟练掌握哈夫曼树的生成算法。2、熟练掌握哈夫曼编码的方法。本次实验提供4个题目,难度相当,学生可以根据自己的情况选做,其中题目一是必做题,其它选作!题目一、哈夫曼树和哈夫曼编码一电文,有若干个不同字符,要求从终端输入这些不同字符及其出现的频率,然后对这些字符进行哈夫曼编码,并输出。测试数据利用教材P.148 例62中的数据调试程序 (可自己设定测试数据)。 选作内容1、打印出该哈夫曼树2、若从终端输入
23、任意一段电文(假设仅为26个大小写英文字母),试编程高效地求出该段电文的哈夫曼编码。如何快速统计不同字符的出现频率3、译码:将上述1的编码结果还原成电文。题目二、寻求最佳判断(ACM/ICPC训练题)试设计一个算法,用最少的比较,尽快地将N个随机的百分制成绩转换成五级分制. 059 bad 6069 pass 7079 general 8089 good 90100 excellent设计要求 输入n个任意的百分制分数,要求输出对应的等级自己定义题目三 果子合并 n堆果子, 每堆果子数量任意,试设计一种最佳方案,将这n堆果子合并为一堆,使得合并工作量最小。 注:规定合并两堆果子的工作量是这两堆
24、果子的数量之和。 标准输入M,N M表示M组测试数据,N表示每组测试数据数量不超过N个,每堆果子数量不超过10000。随后的M行是测试数据。标准输出M行数据表示对应果子的合并工作量输入样例:2 67, 5, 2, 45,6,2,9,7【输出样例】: 35 65题目四 文本文件加密器 (本题有一定难度,可协作完成)【问题描述】对任意文本文件,为安全保密,试为该文件内容加密,并输出加密后的文字,或对加密后的文件解密。一个完整的加解密其应具有以下功能:(1)初始化: 从终端读入一文本文件,统计每个字符出现的频率(考虑效率),建立哈夫曼树,并将该树存入某文件(考虑方式);(2)编码: 利用建好的哈夫曼
25、树对输入的文本文件中各字符进行编码,用列表的形式显示在屏幕上,并将编码结果存入另一文件中;(3)解码:对输入的加密文件能正确进行解码,获得原文件自行设计2、掌握哈夫曼树的定义及生成算法。3、掌握哈夫曼编码的方法。实验五 图的基本操作1、使学生可以巩固所学的有关图的基本知识。2、熟练掌握图的存储结构。3、熟练掌握图的两种遍历算法。 图的遍历(必做)对给定图,实现图的深度优先遍历和广度优先遍历。以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列。【测试数据】由学生依据软件工程的测试技术自己确定。在图G中求一条从顶点 i 到顶点 s 的简单路径题目三:在图G中求一条从顶点 i 到顶点 s 且长度为K的简单路径1、掌握图的相关概念。2、掌握图的逻辑结构和存储结构。3、掌握图的两种遍历算法的实现。实验六 图的应用3、掌握如何应用图解决各种实际问题。本次实验提供若干个题目,难易程度不等,学生可以根据自己的情况选做至少一题。最小生成树问题若要在n个城市之间建设通信网络,只需要假设
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1