图结构试验实验报告.docx

上传人:b****5 文档编号:2801432 上传时间:2022-11-15 格式:DOCX 页数:24 大小:89.21KB
下载 相关 举报
图结构试验实验报告.docx_第1页
第1页 / 共24页
图结构试验实验报告.docx_第2页
第2页 / 共24页
图结构试验实验报告.docx_第3页
第3页 / 共24页
图结构试验实验报告.docx_第4页
第4页 / 共24页
图结构试验实验报告.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

图结构试验实验报告.docx

《图结构试验实验报告.docx》由会员分享,可在线阅读,更多相关《图结构试验实验报告.docx(24页珍藏版)》请在冰豆网上搜索。

图结构试验实验报告.docx

图结构试验实验报告

附件(四)

深圳大学实验报告

课程名称:

数据结构实验与课程设计

实验项目名称:

图结构实验

学院:

计算机与软件学院

专业:

指导教师:

报告人:

学号:

班级:

实验时间:

实验报告提交时间:

教务处制

一、实验目得与完成说明:

1、简单介绍本实验得主要目得

2、说明您自己在本次实验中完成了第几项要求(必填)

Contest1620-DS实验08--图遍历【11、12】

ProblemA:

DS图遍历--深度优先搜索

Description

主要目得:

给出一个图得邻接矩阵,对图进行深度优先搜索,从顶点0开始(完成)

注意:

图n个顶点编号从0到n-1

Input

第一行输入t,表示有t个测试实例(完成)

第二行输入n,表示第1个图有n个结点(完成)

第三行起,每行输入邻接矩阵得一行,以此类推输入n行(完成)

第i个结点与其她结点如果相连则为1,无连接则为0,数据之间用空格隔开(完成)

以此类推输入下一个示例(完成)

Output

每行输出一个图得深度优先搜索结果,结点编号之间用空格隔开(完成)

ProblemB:

DS图遍历--广度优先搜索

Description

给出一个图得邻接矩阵,对图进行深度优先搜索,从顶点0开始(完成)

注意:

图n个顶点编号从0到n-1

Input

第一行输入t,表示有t个测试实例(完成)

第二行输入n,表示第1个图有n个结点(完成)

第三行起,每行输入邻接矩阵得一行,以此类推输入n行(完成)

第i个结点与其她结点如果相连则为1,无连接则为0,数据之间用空格隔开(完成)

以此类推输入下一个示例

Output

每行输出一个图得广度优先搜索结果,结点编号之间用空格隔开(完成)

Contest1638-DS实验09--最短路径【11、19】

ProblemA:

DS图应用--最短路径

Description

给出一个图得邻接矩阵,再给出指定顶点v0,求顶点v0到其她顶点得最短路径(完成)

Input

第一行输入t,表示有t个测试实例(完成)

第二行输入n,表示第1个图有n个结点(完成)

第三行起,每行输入邻接矩阵得一行,以此类推输入n行(完成)

第i个结点与其她结点如果相连则为1,无连接则为0,数据之间用空格隔开

第四行输入v0,表示求v0到其她顶点得最短路径距离(完成)

以此类推输入下一个示例

Output

每行输出v0到某个顶点得最短距离与最短路径(完成)

每行格式:

v0编号-其她顶点编号----[最短路径],具体请参考示范数据(完成)

二、主要思路与方法:

1、对于本次实验,说明您认为最重要得函数、算法或知识点,并谈谈您对它们得理解

Contest1620-DS实验08--图遍历【11、12】

ProblemA:

DS图遍历--深度优先搜索

从0开始连续获取邻接结点,然后逐个遍历并设Visit为true避免重复遍历

ProblemB:

DS图遍历--广度优先搜索

首先将该顶点得邻接顶点全部入队,然后挨个读取,在读取得过程中继续将邻接矩阵入队,并把已经读取过得顶点全被设为true。

Contest1638-DS实验09--最短路径【11、19】

ProblemA:

DS图应用--最短路径

①输入mx矩阵

Mx

0

1

2

3

4

0

0

5

0

7

15

1

0

0

5

0

0

2

0

0

0

0

1

3

0

0

2

0

0

4

0

0

0

0

0

②初始化并赋值Matrix得矩阵

Matrix

0

1

2

3

4

0

5

7

15

1

5

2

1

3

2

4

③初始化并赋值path得矩阵

Path

0

1

2

3

4

0

-1

-1

-1

-1

-1

1

0

1

-1

-1

-1

2

-1

-1

-1

-1

-1

3

0

-1

-1

3

-1

4

0

-1

-1

-1

4

④初始化并赋值dist数组

Dist

0

1

2

3

4

5

7

15

⑤初始并赋值len数组

Len

0

1

2

3

4

5

5

5

5

5

⑥i=1得时候;

min=9999;v=1;min=5;final[1]=true;

可以访问。

Dist[2]=5+Matrix[1][2]=10;

[2]=[1];

Path数组改变

Path

0

1

2

3

4

5

0

-1

-1

-1

-1

-1

1

0

1

-1

-1

-1

2

0

1

-1

-1

-1

2

3

0

-1

-1

3

-1

4

0

-1

-1

-1

4

Dist数组改变

Dist

0

1

2

3

4

5

10

7

15

⑦v=3;min=7;final[3]=true;

可以访问。

Dist[2]=7+Matrix[3][2]=9;[2]=[3];

Path数组改变

Path

0

1

2

3

4

5

0

-1

-1

-1

-1

-1

1

0

1

-1

-1

-1

2

0

-1

-1

3

-1

2

3

0

-1

-1

3

-1

4

0

-1

-1

-1

4

Dist数组改变

Dist

0

1

2

3

4

5

9

7

15

⑧v=2;min=9;final[2]=true;

可以访问。

Dist[4]=9+Matrix[2][4]=10;[4]=[2];

Path数组改变

Path

0

1

2

3

4

5

6

0

-1

-1

-1

-1

-1

1

0

1

-1

-1

-1

2

0

-1

-1

3

-1

2

3

0

-1

-1

3

-1

4

0

-1

-1

3

-1

2

4

Dist数组改变

Dist

0

1

2

3

4

5

9

7

10

三.实验程序或内容:

1、针对每一项实验要求,给出编写得代码,

2、可以粘贴全部代码,或者可以只粘贴重要得代码(为了节省纸张),但代码必须完整,至少就是完整得函数。

3、代码符合以下要求,评分更高:

a、排版整齐,可读性高

b、代码有注释,越详细越清晰越好

Contest1620-DS实验08--图遍历【11、12】

ProblemA:

DS图遍历--深度优先搜索

#include

usingnamespacestd;

constintMaxLen=20;

classMap{

private:

boolVisit[MaxLen];

intMatrix[MaxLen][MaxLen];

intVexnum;

voidDFS(intv);

public:

voidSetMatrix(intvnum,intmx[MaxLen][MaxLen]);

voidDFSTraverse();

};

//设置邻接矩阵

voidMap:

:

SetMatrix(intvnum,intmx[MaxLen][MaxLen])

{

inti,j;

Vexnum=vnum;

for(i=-1;++i

for(j=-1;++j

Matrix[i][j]=0;

for(i=-1;++i

for(j=-1;++j

Matrix[i][j]=mx[i][j];

}

voidMap:

:

DFSTraverse()

{

intv;

//将所有得Visit赋值为false

for(v=-1;++v

Visit[v]=false;

//开始逐个遍历未访问结点

for(v=-1;++v

{

if(!

Visit[v])

{

DFS(v);

}//if

}//for

cout<

}

voidMap:

:

DFS(intv)

{

intw,i,k;

Visit[v]=true;

//输出访问得结点

cout<

//初始化AdjVex

int*AdjVex=newint[Vexnum];

for(i=-1;++i

AdjVex[i]=-1;

//开始遍历这个顶点能到达得邻接顶点

k=0;

for(i=-1;++i

{

if(Matrix[v][i])

{

//把这个顶点得邻接顶点赋值给AdjVex

AdjVex[k++]=i;

}//if

}//for

//开始逐个遍历邻接结点,此处用了递归,会把将要遍历得结点得Visit赋值为true

i=0;

for(;w=AdjVex[i++],w!

=-1;)

{

if(!

Visit[w])

{

DFS(w);

}//if

}//for

delete[]AdjVex;

}

intmain()

{

intt,n,i,j;

Mapm;

cin>>t;

while(t--)

{

cin>>n;

intmx[20][20];

for(i=-1;++i

for(j=-1;++j

cin>>mx[i][j];

m、SetMatrix(n,mx);

m、DFSTraverse();

}

return0;

}

ProblemB:

DS图遍历--广度优先搜索

#include

#include

usingnamespacestd;

constintMaxLen=20;

classMap{

private:

boolVisit[MaxLen];

intMatrix[MaxLen][MaxLen];

intVexnum;

voidDFS(intv);

public:

voidSetMatrix(intvnum,intmx[MaxLen][MaxLen]);

voidDFSTraverse();

voidBFSTraverse();

voidBFS(intv);

};

//设置邻接矩阵

voidMap:

:

SetMatrix(intvnum,

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

当前位置:首页 > 工程科技 > 能源化工

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

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