数据结构实验手册资料.docx

上传人:b****3 文档编号:27203923 上传时间:2023-06-28 格式:DOCX 页数:31 大小:1,008.27KB
下载 相关 举报
数据结构实验手册资料.docx_第1页
第1页 / 共31页
数据结构实验手册资料.docx_第2页
第2页 / 共31页
数据结构实验手册资料.docx_第3页
第3页 / 共31页
数据结构实验手册资料.docx_第4页
第4页 / 共31页
数据结构实验手册资料.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

数据结构实验手册资料.docx

《数据结构实验手册资料.docx》由会员分享,可在线阅读,更多相关《数据结构实验手册资料.docx(31页珍藏版)》请在冰豆网上搜索。

数据结构实验手册资料.docx

数据结构实验手册资料

 

《数据结构实验》指导书

DataStructuresandAlgorithms

LaboratoryProjects

 

王金荣

2014-09-11

 

目录

1《数据结构实验》课程实验教学大纲--------------------------------------1

2实验准备:

如何使用VC6.0?

----------------------------------------------3

3Projects---------------------------------------------------------------------------8

3.1Project1:

算法性能测量-------------------------------------------------8

3.2Project2:

有序表归并实验---------------------------------------------10

3.3Project3:

数据转换------------------------------------------------------11

3.4Project4:

二叉树遍历实验---------------------------------------------12

3.5Project5-1:

堆排序算法实现------------------------------------------13

3.6Project5-2:

归并排序算法实现---------------------------------------14

3.7Project5-3:

快速排序算法实现---------------------------------------15

3.8Project6-1:

图的深度优先搜索---------------------------------------16

3.9Project6-2:

图的广度优先搜索---------------------------------------17

3.10Project7:

散列实验---------------------------------------------------18

4.1ACM题目-------------------------------------------------------------------19

4.1ACM1:

ACboyneedsyourhelpagain!

-------------------------------19

4.2ACM2:

JumpingtheQueue--------------------------------------------21

4.3ACM3:

Median----------------------------------------------------------23

4.4ACM4:

IgnatiusandthePrincessI------------------------------------25

5实验报告格式-----------------------------------------------------------------28

6实验报告上交说明-----------------------------------------------------------29

1《数据结构实验》课程实验教学大纲

课程中文名称:

数据结构实验

课程英文名称:

DataStructurePractices

实验课程性质:

独立设课

课程编码:

044209101

一、学时、学分

课程总学时:

34实验学时:

34

课程总学分:

1实验学分:

1

二、适用专业及年级

计算机科学与技术专业,软件工程专业,第二学期

三、实验教学目的与基本要求

“数据结构实验”的总体目标是:

通过实验使学生对课堂讲授的内容有实际的体验,加深对概念、算法、技术的理解、掌握、应用,并激发学生进一步的思考和发挥,注重培养学生的学习兴趣和创新思维。

通过实验,使学生进一步掌握VC编程环境;理解和掌握数据结构的基本问题和基本算法;具备大型程序的编程能力,特别是多文件大型工程的编程;了解ACM竞赛的赛题,掌握参加ACM竞赛的基本技能。

四、主要仪器设备

通过局域网互联、安装WindowsXP/windows7操作系统和VisualC++环境的微机。

五、实验课程内容和学时分配

实验项目

名称

实验项目内容

项目

学时

实验

属性

项目

类型

每组人数

项目要求

1

PerformanceMeasurement

VC环境配置,递归和非递归顺序搜索算法,算法性能测量方法。

4

专业

基础

设计

1

必做

2

ListandApplications

List的的基本操作的实现,并将List用于解决实际问题。

6

专业

基础

综合

1

必做

3

Stack,QueueandApplications

堆栈和队列数据结构的表示和基本操作实现,堆栈和队列的应用方法。

6

专业

基础

综合

1

必做

4

BinaryTree

二叉树的表示方法和各遍历算法及其他基本操作,二叉树应用。

6

专业

基础

综合

1

必做

5

AnACMProblem

用数据结构相关知识解决ACM竞赛问题。

4

专业

基础

综合

1

选做

6

SortingAlgorithms

各种内部排序算法的实现,将排序算法用于解决实际问题。

4

专业

基础

验证

1

必做

7

GraphandApplications

图的表示及基本操作的实现,图的应用。

4

专业

基础

综合

1

必做

注:

1.实验项目名称,表达要简洁准确;

2.实验属性,分“基础”、“专业基础”、“专业”。

按课程代码的第3位进行识别,第3位≤3的为“基础”,第3位=4的为“专业基础”,第3位=5的为“专业”。

3.项目类型,分“演示”、“验证”、“综合”、“设计研究”、“其他”。

4.项目要求,分“必做”、“选做”。

六、成绩考核

(1)实验成绩的构成:

平时成绩占50%,实验考核占50%,其它占0%。

(2)评分标准(按构成分类说明):

平时成绩:

自编讲义《数据结构实验指导书》中已经明确规定每个实验的目的、任务、主要步骤和评分标准。

教师以此为依据,根据学生通过上交的实验报告和实验源代码确定其完成数量和质量、进行评分。

实验考核:

期末考试安排闭卷上机考试,考试题目从平时课堂试验中随机抽取。

七、实验教科书、参考书

(一)教科书

《数据结构实验指导书》袁贞明,王金荣编,自编讲义

(二)参考书

1.《数据结构与算法分析》MarkAllenWeiss,陈越改编,人民邮电出版社,2005.08

2.《数据结构(C语言)》EllisHorowitz,李建中等译,机械工业出版社,2006.07.

2实验准备:

如何使用visualstudio2010编写一个c++程序?

 

3Projects

3.1Project1:

算法性能测量

(1)问题描述

随机生成为N个随机整数,请分别用“选择排序法”和“希尔排序法”对其进行从小到大的排序,并测试不同规模N下两算法的运行时间。

(2)任务

实现选择排序法,算法见教材P11-Program1.4;

实现希尔排序法,算法附后;

分折选择排序法的时间和空间复杂度;

当规模N分别取1000、2000、4000、8000、16000、32000、64000时,测试四个函数的运行时间,将所测结果填入表1中。

*画出函数运行时间T随着规模N的变化趋势图(可以用PPT、Matlab画)。

(3)生成随机整数的方法

生成方法如下图所示,程序开头需要加上“stdlib.h”头文件。

(4)函数运行时间测试方法

为测试一个C函数的运行时间,需要使用头文件“time.h”,具体测试方法参见第1.6.1节,如下所示:

 

注:

当一个函数的运行时间小于一个tick(毫秒),则其所测时间为0.0,为了测试这种情况下函数的运行时间,我们可以将该函数重复运行K次,再测试其总运行时间(“TotalTime”),然后将该时间除以K即得该函数的一次运行时间(“Duration”)。

此处的K要求足够大,使得总运行时间不能少于100毫秒。

表1四个函数的运行时间统计(秒)

---

N

1000

2000

4000

8000

16000

32000

64000

SelectionSort

Iterations(K)

TotalTime(sec)

Duration(sec)

ShellSort

Iterations(K)

TotalTime(sec)

Duration(sec)

(5)希尔排序算法

3.2Project2:

有序表归并实验

(1)问题描述

对任意输入的两个按值非递减有序的整数序列,写一程序将它们归并成一个按值非递减有序序列。

(2)输入描述

文本文件“input.txt”中保存了n个测试用例,文件以-1结束。

每个用例的第一行m1表示第一个待归并有序序列的元素个数,第二行为该序列的m1个元素,第三行m2表示第二个待归并有序序列的元素个数,第四行为该序列的m2个元素。

(3)输出描述

输出结果保存在文本文件“output.txt”中。

对于每个测试用例均有二行输出,第一行输出“Case#:

##”,#表示用例的编号(1…n),##表示归并后有序序列的元素个数;第二行输出##个按值非递减有序元素。

(4)输入示例

5

1481030

7

242035506086

3

3845100

4

3850100120

-1

(5)输出示例

Case1:

12

1244810203035506086

Case2:

7

38384550100100120

 

3.3Project3:

数据转换

(1)问题描述

对任意输入的十进制正整数,写一程序将其转换成二进制表示。

要求首先实现StackADT,然后用栈的基本操作完成该程序。

(2)输入描述

文本文件“input.txt”中保存了n个小于32768的正整数,文件以-1结束。

(3)输出描述

输出结果保存在文本文件“output.txt”中,文件每一行输出“#--->##”,#表示十进制表示的正整数,##为其二进制表示结果。

(4)输入示例

20

16

34

45

100

-1

(5)输出示例

20--->10100

16--->10000

34--->100010

45--->101101

100--->1100100

3.4Project4:

二叉树遍历实验

(1)Problemdescription

Createbinarytreeasfollow(Figure-1)incomputer,writeoutthefunctionsofinOrder,preOrder,postOrderandlevelOrder,andusethemtotraversalthebinarytree.Andcomputetheleafnumberandheightofthebinarytree.

Hint:

Youmaychoosesuitablerepresentation,suchaslinkedrepresentationisoftenused.

 

Figure-1abinarytree

(2)Stepsandrestrictconditions

Step1. Writethefunctionofcreatetocreateatreebyinputdata.TheinputformatofthebinarytreeinFigure-1isas:

ABD#G##CE##FH###.

Step 2.   WriterecursiveversionfunctionsofinOrder,preOrderandpostOrdertotraversalthetree.

Step 3.   SelectasuitablerepresentationtoimplementstackADT,whichmustatleasthasfivebasicoperations:

IsFull,IsEmpty,PushandPop.Theelementtypeinthestackispointerofnode.

Step 4.  ImplementQueueADTrepresentedbycircularqueue,whichhassevenbasicoperations:

IsEmpty,IsFull,AddQ,DeleteQ.Theelementtypeinthequeueispointerofnode.

Step 5.  Writeaniterativeversionofinorder,thenameisiterInorder()toinordertraversaltree.

Step 6. Writeafunctionforlevelordertraversalofbinarytree,thenameislevelOrder.

Step7.Writeafunctiontocomputetheleafnumberofthebinarytree,thenameisleaf.

Step8.Writeafunctiontocomputetheheightofthebinarytree,thenameisheight.

3.5Project5-1:

堆排序算法实现

(1)问题描述

对于任一无序正整数序列,写一程序用堆排序算法将其排序成按值非递减有序序列。

(2)输入描述

文本文件“input.txt”中保存了n个测试用例,文件以-1结束。

每个用例的第一行m表示待排序正整数序列的元素个数,第二行为该序列的m个正整数。

(3)输出描述

输出结果保存在文本文件“output.txt”中。

对于每个测试用例均有二行输出,第一行输出“Case#:

##”,#表示用例的编号(1…n),##表示排序后有序序列的元素个数,第二输出##个按值非递减有序元素。

(4)输入示例

5

1018430

7

356050220486

3

3810045

-1

(5)输出示例

Case1:

5

1481030

Case2:

7

242035506086

Case3:

3

3845100

 

3.6Project5-2:

归并排序算法实现

(1)问题描述

对于任一无序正整数序列,写一程序用归并排序算法将其排序成按值非递减有序序列。

(2)输入描述

文本文件“input.txt”中保存了n个测试用例,文件以-1结束。

每个用例的第一行m表示待排序正整数序列的元素个数,第二行为该序列的m个正整数。

(3)输出描述

输出结果保存在文本文件“output.txt”中。

对于每个测试用例均有二行输出,第一行输出“Case#:

##”,#表示用例的编号(1…n),##表示排序后有序序列的元素个数,第二输出##个按值非递减有序元素。

(4)输入示例

5

1018430

7

356050220486

3

3810045

-1

(5)输出示例

Case1:

5

1481030

Case2:

7

242035506086

Case3:

3

3845100

 

3.7Project5-3:

快速排序算法实现

(1)问题描述

对于任意的无序正整数序列,写一程序用快速排序算法将其排序成按值非递减有序序列。

其中直接插入排序算法见附录。

(2)输入描述

文本文件“input.txt”中保存了n个测试用例,文件以-1结束。

每个用例的第一行m表示第一个待排序整数序列的元素个数,第二行为该序列的m个元素。

(3)输出描述

输出结果保存在文本文件“output.txt”中。

对于每个测试用例均有二行输出,第一行输出“Case#:

##”,#表示用例的编号(1…n),##表示排序后有序序列的元素个数,第二输出##个按值非递减有序元素。

(4)输入示例

5

1018430

7

356050220486

3

3810045

-1

(5)输出示例

Case1:

5

1481030

Case2:

7

242035506086

Case3:

3

3845100

 

3.8Project6-1:

图的深度优先搜索

(1)问题描述

写一程序实现图的深度优先搜索算法(DFS),并对输入的有向图输出遍历结果。

(2)输入描述

文本文件“input.txt”中保存了一个有向图的输入,文件以-1结束。

第一行表示该图的顶点数n(输入示例中为6)和弧数m(输入示例中为11);接下去m行是用(i,j,e)表示的弧,它表示从顶点i出发到顶点j的权值为e的弧。

最后几行分别表示从这些顶点出发进行DFS,输出它们的结果。

(3)输出描述

输出结果保存在文本文件“output.txt”中。

对每个开始搜索的顶点,都有一行,该行表示从该顶点出发进行DFS的结果。

(4)输入示例

611

0150

0210

0445

1215

1410

2020

2315

3120

3435

4330

533

1

3

-1

(5)输出示例

DFSFromV1:

V1V4V3V2V0

DFSFromV3:

V3V4V1V2V0

 

3.9Project6-2:

图的广度优先搜索

(1)问题描述

写一程序实现图的广度优先搜索算法(BFS),并对输入的有向图输出遍历结果。

(2)输入描述

文本文件“input.txt”中保存了一个有向图的输入,文件以-1结束。

第一行表示该图的顶点数n(输入示例中为6)和弧数m(输入示例中为11);接下去m行是用(i,j,e)表示的弧,它表示从顶点i出发到顶点j的权值为e的弧。

最后几行分别表示从这些顶点出发进行BFS,输出它们的结果。

(3)输出描述

输出结果保存在文本文件“output.txt”中。

对每个开始搜索的顶点,都有一行,该行表示从该顶点出发进行DFS的结果。

(4)输入示例

611

0150

0210

0445

1215

1410

2020

2315

3120

3435

4330

533

1

3

-1

(5)输出示例

 

3.10Project7:

Hashing

GivenahashtableofsizeN,wecandefineahashfunctionH(x)=x%N.Supposethatthelinearprobingisusedtosolvecollisions,wecaneasilyobtainthestatusofthehashtablewithagivensequenceofinputnumbers.

However,nowyouareaskedtosolvethereversedproblem:

reconstructtheinputsequencefromthegivenstatusofthehashtable.Whenevertherearemultiplechoices,thesmallestnumberisalwaystaken.

InputSpecification:

Yourprogrammustreadtestcasesfromthestandardinput.

Inputconsistsofseveraltestcases.Foreashtestcase,thefirstlinecontainsapositiveintegerN(N<=1000),whichisthesizeofthehashtable.ThenextlinecontainsNintegers,separatedbyaspace.Anegativeintegerrepresentsanemptycellinthehashtable.Itisguaranteedthatallthenon-negativeintegersaredistinctinthetable.

TheinputendswithNbeing0.ThatcasemustNOTbeprocessed.

OutputSpecification:

Foreachtestcase,outputtothestandardoutput.Printalinethatcontainstheinputsequence,withthenumbersseparatedbyaspace.Noticethattheremustbenonextraspaceattheendofeachline.

SampleInput:

11

33113123438272232-121

3

312

0

SampleOutput:

1131221

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

当前位置:首页 > 人文社科 > 文学研究

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

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