数据结构实验指导书new高艳霞Word下载.docx

上传人:b****6 文档编号:20438016 上传时间:2023-01-23 格式:DOCX 页数:19 大小:31.34KB
下载 相关 举报
数据结构实验指导书new高艳霞Word下载.docx_第1页
第1页 / 共19页
数据结构实验指导书new高艳霞Word下载.docx_第2页
第2页 / 共19页
数据结构实验指导书new高艳霞Word下载.docx_第3页
第3页 / 共19页
数据结构实验指导书new高艳霞Word下载.docx_第4页
第4页 / 共19页
数据结构实验指导书new高艳霞Word下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数据结构实验指导书new高艳霞Word下载.docx

《数据结构实验指导书new高艳霞Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构实验指导书new高艳霞Word下载.docx(19页珍藏版)》请在冰豆网上搜索。

数据结构实验指导书new高艳霞Word下载.docx

3、熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉链表的操作为侧重点。

二、实验内容

本次实验提供4个题目,每个题目都标有难度系数,*越多难度越大,学生可以根据自己的情况选做!

题目一:

单链表的基本操作(*)

[问题描述]

实现带头结点的单链表的建立、求长度,取元素、修改元素、插入、删除等单链表的基本操作。

[基本要求]

(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。

题目四:

Dr.Kong设计了一件艺术品(****)

Dr.Kong设计了一件艺术品,该艺术品由N个构件堆叠而成,N个构件从高到低按层编号依次为1,2,……,N。

艺术品展出后,引起了强烈的反映。

Dr.Kong观察到,人们尤其对作品的高端部分评价甚多。

狂热的Dr.Kong一激动,对组成该艺术品的N个构件重新组合,比如:

把第6层到第12层的构件搬下来,想一想,然后整体放到剩下构件的第7层下面;

过一会儿,又把第2层到第9层的构件搬下来,整体放到剩下构件的第1层下面等等。

于是,Dr.Kong在进行了连续若干次“搬来搬去”后,还是这N个构件,又诞生了一件新的艺术品。

编程:

请输出新的艺术品最高十层构件的编号。

【标准输入】

第一行:

NK表示构件的总数和“搬来搬去”的总次数

第2~K+1行:

ABC表示要搬动的构件(即从第A层到第B层)整个放在第C层下面;

如果C等于0,则要搬动的构件将放到最高层。

【标准输出】

由十行组成,分别为组成新艺术品的第一层到第十层构件的编号。

【约束条件】

(1)10≤N≤200001≤k≤1000

(2)1≤A≤B≤N,0≤C≤N-(B-A+1)

【样例】

提示:

样例中仅是常规的测试数据输入及对应结果,特殊情况需要全面考虑,自己设计测试数据验证算法的健壮性。

标准输入(测试数据):

133

6121

290

10138

标准输出结果:

6

7

8

9

10

11

12

2

3

4

  适宜于用带表头结点的单链表实现,涉及单个结点或连续多个结点的插入与删除。

  分别用不带头结点的单链表和顺序表实现,领会三种方法的算法设计的优缺点和时间复杂度。

三、实验前的准备工作

1、掌握线性表的逻辑结构。

2、掌握线性表的链式存储结构。

3、熟练掌握线性表的插入、删除等操作。

四、实验报告要求

1、实验报告要按照实验报告格式规范书写。

2、实验上要写出多批测试数据的运行结果。

3、结合运行结果,对程序进行分析。

实验二栈和队列的基本操作及其应用

1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用。

2、掌握栈和队列的特点,即后进先出和先进先出的原则。

3、掌握栈和队列的基本运算,如:

入栈与出栈,入队与出队等运算在顺序存储结构和链式存储结构上的实现。

回文判断(*)

对于一个从键盘输入的字符串,判断其是否为回文。

回文即正反序相同。

如“abba”是回文,而“abab”不是回文。

(1)数据从键盘读入;

(2)输出要判断的字符串;

(3)利用栈和队列对给定的字符串判断其是否是回文,若是则输出“Yes”,否则输出“No”。

商品货架管理(**)

商店货架以栈的方式摆放商品。

生产日期越近的越靠近栈底,出货时从栈顶取货。

一天营业结束,如果货架不满,则需上货。

入货直接将商品摆放到货架上,则会使生产日期越近的商品越靠近栈顶。

这样就需要倒货架,使生产日期越近的越靠近栈底。

设计一个算法,保证每一次上货后始终保持生产日期越近的商品越靠近栈底。

可以用一个队列和一个临时栈作为周转。

舞伴问题(**)

假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。

跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。

若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。

现要求写一算法模拟上述舞伴配对问题。

【实验提示】

先入队的男士或女士亦先出队配成舞伴。

因此该问题具体有典型的先进先出特性,可用队列作为算法的数据结构。

在算法中,假设男士和女士的记录存放在一个数组中作为输入,然后依次扫描该数组的各元素,并根据性别来决定是进入男队还是女队。

当这两个队列构造完成之后,依次将两队当前的队头元素出队来配成舞伴,直至某队列变空为止。

此时,若某队仍有等待配对者,算法输出此队列中等待者的人数及排在队头的等待者的名字,他(或她)将是下一轮舞曲开始时第一个可获得舞伴的人。

【实验要求】

利用队列实现,存储结构采用顺序或链式均可

 

Rails(***)

[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

654321

[SampleOutput]

Yes

No

1、掌握栈的逻辑结构和存储结构。

2、熟练掌握栈的出栈、入栈等操作。

3、掌握队列的逻辑结构和存储结构。

4、熟练掌握队列的出队、入队等操作

实验三二叉树的基本运算

1、使学生熟练掌握二叉树的逻辑结构和存储结构。

2、熟练掌握二叉树的各种遍历算法。

二叉树的基本操作实现(必做题)

建立一棵二叉树,试编程实现二叉树的如下基本操作:

1.按先序序列构造一棵二叉链表表示的二叉树T;

2.对这棵二叉树进行遍历:

先序、中序、后序以及层次遍历,分别输出结点的遍历序列;

3.求二叉树的深度/结点数目/叶结点数目;

(选做)

4.将二叉树每个结点的左右子树交换位置。

[基本要求]

从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),

如输入:

ABCффDEфGффFффф(其中ф表示空格字符)

  则输出结果为

先序:

ABCDEGF

  中序:

CBEGDFA

  后序:

CGEFDBA

层序:

ABCDEFG

采用非递归算法实现二叉树遍历。

题目二、TheNumberoftheSameBST(选作)

【Description】

Manypeopleknowsbinarysearchtree.ThekeysinabinarysearchtreearealwaysstoredinsuchawayastosatisfytheBSTproperty:

LetXbeanodeinabinarysearchtree.IfYisanodeintheleftsubtreeofX,thenY<

=X.IfYisanodeintherightsubtreeofX,thenY>

X.

Forexample,

Itisabinarysearchtree.AnditcanbebuiltbyinsertingtheelementsofvectorA=(12,6,3,18,20,10,4,17,20)sequentially.ButitcanalsobebuiltbythevectorB=(12,18,17,6,20,3,10,4,20).

NowgivenavectorX,thenyoumaygetabinarysearchtreefromX.Yourjobistocalculatehowmanydifferentvectorscanbuildthesamebinarysearchtree.Tomakeiteasy,youshouldjustoutputthenumberofdifferentvectorsmod9901.

【Input】

Inputconsistsofseveralcases.Eachcasestartswithalinecontainingonepositiveintegern,whichisthelengthoftestvector.Theintegernislessthan20.Followingthistherewillbenpositiveintegers,whicharelessthen1000,onthenextline.Theinputwillendwithacasestartingwithn=0.Thiscaseshouldnotbeprocessed.

【Output】

Foreachtestcase,printalinewithasingleinteger,whichisthenumberofdifferentvectorsmod9901.

【SampleInput】

213

56318201041720

【Sampleoutput】

168

1、掌握树的逻辑结构。

2、掌握二叉树的逻辑结构和存储结构。

3、掌握二叉树的各种遍历算法的实现。

实验四哈夫曼树与哈夫曼编码

1、使学生熟练掌握哈夫曼树的生成算法。

2、熟练掌握哈夫曼编码的方法。

本次实验提供4个题目,难度相当,学生可以根据自己的情况选做,其中题目一是必做题,其它选作!

题目一、哈夫曼树和哈夫曼编码

 一电文,有若干个不同字符,要求从终端输入这些不同字符及其出现的频率,然后对这些字符进行哈夫曼编码,并输出。

[测试数据]

利用教材P.148例6-2中的数据调试程序(可自己设定测试数据)。

[选作内容]

1、打印出该哈夫曼树

2、若从终端输入任意一段电文(假设仅为26个大小写英文字母),试编程高效地求出该段电文的哈夫曼编码。

如何快速统计不同字符的出现频率

3、译码:

将上述1的编码结果还原成电文。

题目二、寻求最佳判断(ACM/ICPC训练题)

试设计一个算法,用最少的比较,尽快地将N个随机的百分制成绩转换成五级分制.

0~59————————————————————bad

60~69————————————————————pass

70~79————————————————————general

80~89————————————————————good

90~100————————————————————excellent

[设计要求]

输入n个任意的百分制分数,要求输出对应的等级

自己定义

题目三果子合并

n堆果子,每堆果子数量任意,试设计一种最佳方案,将这n堆果子合并为一堆,使得合并工作量最小。

注:

规定合并两堆果子的工作量是这两堆果子的数量之和。

[标准输入]

M,NM表示M组测试数据,N表示每组测试数据数量不超过N个,每堆果子数量不超过10000。

随后的M行是测试数据。

[标准输出]

M行数据表示对应果子的合并工作量

[输入样例]:

26

7,5,2,4

5,6,2,9,7

【输出样例】:

35

65

题目四文本文件加密器(本题有一定难度,可协作完成)

【问题描述】

对任意文本文件,为安全保密,试为该文件内容加密,并输出加密后的文字,或对加密后的文件解密。

一个完整的加解密其应具有以下功能:

(1)初始化:

从终端读入一文本文件,统计每个字符出现的频率(考虑效率),建立哈夫曼树,并将该树存入某文件(考虑方式);

(2)编码:

利用建好的哈夫曼树对输入的文本文件中各字符进行编码,用列表的形式显示在屏幕上,并将编码结果存入另一文件中;

(3)解码:

对输入的加密文件能正确进行解码,获得原文件

自行设计

2、掌握哈夫曼树的定义及生成算法。

3、掌握哈夫曼编码的方法。

实验五图的基本操作

1、使学生可以巩固所学的有关图的基本知识。

2、熟练掌握图的存储结构。

3、熟练掌握图的两种遍历算法。

图的遍历(必做)

  对给定图,实现图的深度优先遍历和广度优先遍历。

   以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历。

以用户指定的结点为起点,分别输出每种遍历下的结点访问序列。

【测试数据】

  由学生依据软件工程的测试技术自己确定。

在图G中求一条从顶点i到顶点s的简单路径

[题目三]:

在图G中求一条从顶点i到顶点s且长度为K的简单路径

1、掌握图的相关概念。

2、掌握图的逻辑结构和存储结构。

3、掌握图的两种遍历算法的实现。

实验六图的应用

3、掌握如何应用图解决各种实际问题。

本次实验提供若干个题目,难易程度不等,学生可以根据自己的情况选做至少一题。

最小生成树问题

若要在n个城市之间建设通信网络,只需要假设

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1