数据结构实验指导书Word格式.docx
《数据结构实验指导书Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构实验指导书Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
题目一:
单链表的基本操作(*)
[问题描述]
实现带头结点的单链表的建立、求长度,取元素、修改元素、插入、删除等单链表的基本操作。
[基本要求]
(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,(设n≤30)。
然后输入各人的密码。
[选作内容]
向上述程序中添加在顺序结构上实现的部分。
题目三:
多项式的表示及相加(***)
设计一个算法,以实现一元稀疏多项式的加法运算。
(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、熟练掌握队列的出队、入队等操作
Rails(ACM训练题)
Description
ThereisafamousrailwaystationinPopPushCity.Countrythereisincrediblyhilly.Thestationwasbuiltinlastcentury.Unfortunately,fundswereextremelylimitedthattime.Itwaspossibletoestablishonlyasurfacetrack.Moreover,itturnedoutthatthestationcouldbeonlyadead-endone(seepicture)andduetolackofavailablespaceitcouldhaveonlyonetrack.
ThelocaltraditionisthateverytrainarrivingfromthedirectionAcontinuesinthedirectionBwithcoachesreorganizedinsomeway.AssumethatthetrainarrivingfromthedirectionAhasN<
=1000coachesnumberedinincreasingorder1,2,...,N.ThechieffortrainreorganizationsmustknowwhetheritispossibletomarshalcoachescontinuinginthedirectionBsothattheirorderwillbea1,a2,...,aN.Helphimandwriteaprogramthatdecideswhetheritispossibletogettherequiredorderofcoaches.YoucanassumethatsinglecoachescanbedisconnectedfromthetrainbeforetheyenterthestationandthattheycanmovethemselvesuntiltheyareonthetrackinthedirectionB.Youcanalsosupposethatatanytimetherecanbelocatedasmanycoachesasnecessaryinthestation.ButonceacoachhasenteredthestationitcannotreturntothetrackinthedirectionAandalsoonceithasleftthestationinthedirectionBitcannotreturnbacktothestation.
Input
Theinputconsistsofblocksoflines.Eachblockexceptthelastdescribesonetrainandpossiblymorerequirementsforitsreorganization.InthefirstlineoftheblockthereistheintegerNdescribedabove.Ineachofthenextlinesoftheblockthereisapermutationof1,2,...,N.Thelastlineoftheblockcontainsjust0.
Thelastblockconsistsofjustonelinecontaining0.
Output
Theoutputcontainsthelinescorrespondingtothelineswithpermutationsintheinput.AlineoftheoutputcontainsYesifitispossibletomarshalthecoachesintheorderrequiredonthecorrespondinglineoftheinput.OtherwiseitcontainsNo.Inaddition,thereisoneemptylineafterthelinescorrespondingtooneblockoftheinput.Thereisnolineintheoutputcorrespondingtothelast``null'
'
blockoftheinput.
SampleInput
5
12345
54123
6
654321
SampleOutput
Yes
No
题目四:
SlidingWindow(ACM训练题)
Anarrayofsizen≤106isgiventoyou.Thereisaslidingwindowofsizekwhichismovingfromtheveryleftofthearraytotheveryright.Youcanonlyseetheknumbersinthewindow.Eachtimetheslidingwindowmovesrightwardsbyoneposition.Followingisanexample:
Thearrayis[1
3
-1
-3
5
6
7],andkis3.
Windowposition
Minimumvalue
Maximumvalue
[1
-1]
7
-1
3
1
[3
-3]
-3
[-1
5]
[-3
3]
[5
6]
7]
7
Yourtaskistodeterminethemaximumandminimumvaluesintheslidingwindowateachposition.
Theinputconsistsoftwolines.Thefirstlinecontainstwointegersnandkwhicharethelengthsofthearrayandtheslidingwindow.Therearenintegersinthesecondline.
Therearetwolinesintheoutput.Thefirstlinegivestheminimumvaluesinthewindowateachposition,fromlefttoright,respectively.Thesecondlinegivesthemaximumvalues.
83
13-1-35367
-1-3-3-333
335567
实验三二叉树的基本运算
1、使学生熟练掌握二叉树的逻辑结构和存储结构。
2、熟练掌握二叉树的各种遍历算法。
建立一棵二叉树,试编程实现二叉树的如下基本操作:
1.按先序序列构造一棵二叉链表表示的二叉树T;
2.对这棵二叉树进行遍历:
先序、中序、后序以及层次遍历,分别输出结点的遍历序列;
3.求二叉树的深度/结点数目/叶结点数目;
(选做)
4.将二叉树每个结点的左右子树交换位置。
[基本要求]
从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),
如输入:
ABCффDEфGффFффф(其中ф表示空格字符)
则输出结果为
先序:
ABCDEGF
中序:
CBEGDFA
后序:
CGEFDBA
层序:
ABCDEFG
采用非递归算法实现二叉树遍历。
1、掌握树的逻辑结构。
2、掌握二叉树的逻辑结构和存储结构。
3、掌握二叉树的各种遍历算法的实现。
实验四哈夫曼树与哈夫曼编码
1、使学生熟练掌握哈夫曼树的生成算法。
2、熟练掌握哈夫曼编码的方法。
已知n个字符在原文中出现的频率,求它们的哈夫曼编码。
1.初始化:
从键盘读入n个字符,以及它们的权值,建立Huffman
树。
(具体算法可参见教材P147的算法6.12)
2.编码:
根据建立的Huffman树,求每个字符的Huffman编码。
对给定的待编码字符序列进行编码。
1.译码:
利用已经建立好的Huffman树,对上面的编码结果译码。
译码的过程是分解电文中的字符串,从根结点出发,按字符’0’和’1’确定找左孩子或右孩子,直至叶结点,便求得该子串相应的字符。
4.打印
Huffman树。
[测试数据]
利用教材P.148例6-2中的数据调试程序。
可设8种符号分别为A,B,C,D,E,F,G,H。
编/译码序列为“CFBABBFHGH”(也可自己设定数据进行测试)。
2、掌握哈夫曼树的定义及生成算法。
3、掌握哈夫曼编码的方法。
实验五图的基本操作
1、使学生可以巩固所学的有关图的基本知识。
2、熟练掌握图的存储结构。
3、熟练掌握图的两种遍历算法。
对给定图,实现图的深度优先遍历和广度优先遍历。
以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历。
以用户指定的结点为起点,分别输出每种遍历下的结点访问序列。
【测试数据】
由学生依据软件工程的测试技术自己确定。
1、掌握图的相关概念。
2、掌握图的逻辑结构和存储结构。
3、掌握图的两种遍历算法的实现。
实验六图的应用
3、掌握如何应用图解决各种实际问题。
本次实验提供2个题目,学生可以任选一个!
最小生成树问题
若要在n个城市之间建设通信网络,只需要假设n-1条线路即可。
如何以最低的经济代价建设这个通信网,是一个网的最小生成树问题。
1.利用克鲁斯卡尔算法求网的最小生成树。
2.要求输出各条边及它们的权值。
[实现提示]
通信线路一旦建成,必然是双向的。
因此,构造最小生成树的网一定是无向网。
设图的顶点数不超过30个,并为简单起见,网中边的权值设成小于100的整数。
图的存储结构的选取应和所作操作相适应。
为了便于选择权值最小的边,此题的存储结构既不选用邻接矩阵的数组表示法,也不选用邻接表,而是以存储边(带权)的数组表示图。
[测试数据]
由学生依据软件工程的测试技术自己确定。
最短路径问题
给定一个无向网,可以求得任意一对顶点之间的最短路径。
以邻接矩阵为存储结构,用迪杰斯特拉算法求解从某一源点到其它顶点之间的最短路径及最短路径长度。
3、掌握图的各种应用的实现。
实验七查找、排序的应用
1、本实验可以使学生更进一步巩固各种查找和排序的基本知识。
2、学会比较各种排序与查找算法的优劣。
3、学会针对所给问题选用最适合的算法。
4、掌握利用常用的排序与选择算法的思想来解决一般问题的方法和技巧。
对学生的基本信息进行管理。
设计一个学生信息管理系统,学生对象至少要包含:
学号、姓名、性别、成绩1、成绩2、总成绩等信息。
要求实现以下功能:
1.总成绩要求自动计算;
2.查询:
分别给定学生学号、姓名、性别,能够查找到学生的基本信息(要求至少用两种查找算法实现);
3.排序:
分别按学生的学号、成绩1、成绩2、总成绩进行排序(要求至少用两种排序算法实现)。
1、掌握哈希表的定义,哈希函数的构造方法。
2、掌握一些常用的查找方法。
1、掌握几种常用的排序方法。
2、掌握直接排序方法。
实验报告格式
一、问题描述
二、算法设计(包括算法设计思想、算法设计分析、流程图等)
三、测试数据
四、结果及分析
五、附录(源代码)