数据结构实验报告图实验.docx

上传人:b****6 文档编号:13500930 上传时间:2023-06-14 格式:DOCX 页数:11 大小:15.53KB
下载 相关 举报
数据结构实验报告图实验.docx_第1页
第1页 / 共11页
数据结构实验报告图实验.docx_第2页
第2页 / 共11页
数据结构实验报告图实验.docx_第3页
第3页 / 共11页
数据结构实验报告图实验.docx_第4页
第4页 / 共11页
数据结构实验报告图实验.docx_第5页
第5页 / 共11页
数据结构实验报告图实验.docx_第6页
第6页 / 共11页
数据结构实验报告图实验.docx_第7页
第7页 / 共11页
数据结构实验报告图实验.docx_第8页
第8页 / 共11页
数据结构实验报告图实验.docx_第9页
第9页 / 共11页
数据结构实验报告图实验.docx_第10页
第10页 / 共11页
数据结构实验报告图实验.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构实验报告图实验.docx

《数据结构实验报告图实验.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告图实验.docx(11页珍藏版)》请在冰点文库上搜索。

数据结构实验报告图实验.docx

数据结构实验报告图实验

图实验

一,邻接矩阵的实现

1.实验目的

(1)掌握图的逻辑结构

(2)掌握图的邻接矩阵的存储结构

(3)验证图的邻接矩阵存储及其遍历操作的实现

2.实验内容

(1)建立无向图的邻接矩阵存储

(2)进行深度优先遍历

(3)进行广度优先遍历

3.设计与编码

MGraph.h

#ifndefMGraph_H

#defineMGraph_H

constintMaxSize=10;

template

classMGraph

{

public:

MGraph(DataTypea[],intn,inte);

~MGraph(){

}

voidDFSTraverse(intv);

voidBFSTraverse(intv);

private:

DataTypevertex[MaxSize];

intarc[MaxSize][MaxSize];

intvertexNum,arcNum;

};

#endif

MGraph.cpp

#include

usingnamespacestd;

#include"MGraph.h"

externintvisited[MaxSize];

template

MGraph:

:

MGraph(DataTypea[],intn,inte)

{

inti,j,k;

vertexNum=n,arcNum=e;

for(i=0;i

vertex[i]=a[i];

for(i=0;i

for(j=0;j

arc[i][j]=0;

for(k=0;k

{

cout<<"Pleaseentertwovertexsnumberofedge:

";

cin>>i>>j;

arc[i][j]=1;

arc[j][i]=1;

}

}

template

voidMGraph:

:

DFSTraverse(intv)

{

cout<

visited[v]=1;

for(intj=0;j

if(arc[v][j]==1&&visited[j]==0)

DFSTraverse(j);

}

template

voidMGraph:

:

BFSTraverse(intv)

{

intQ[MaxSize];

intfront=-1,rear=-1;

cout<

visited[v]=1;

Q[++rear]=v;

while(front!

=rear)

{

v=Q[++front];

for(intj=0;j

if(arc[v][j]==1&&visited[j]==0){

cout<

visited[j]=1;

Q[++rear]=j;

}

}

}

MGraph_main.cpp

#include

usingnamespacestd;

#include"MGraph.h"

externintvisited[MaxSize];

template

MGraph:

:

MGraph(DataTypea[],intn,inte)

{

inti,j,k;

vertexNum=n,arcNum=e;

for(i=0;i

vertex[i]=a[i];

for(i=0;i

for(j=0;j

arc[i][j]=0;

for(k=0;k

{

cout<<"Pleaseentertwovertexsnumberofedge:

";

cin>>i>>j;

arc[i][j]=1;

arc[j][i]=1;

}

}

template

voidMGraph:

:

DFSTraverse(intv)

{

cout<

visited[v]=1;

for(intj=0;j

if(arc[v][j]==1&&visited[j]==0)

DFSTraverse(j);

}

template

voidMGraph:

:

BFSTraverse(intv)

{

intQ[MaxSize];

intfront=-1,rear=-1;

cout<

visited[v]=1;

Q[++rear]=v;

while(front!

=rear)

{

v=Q[++front];

for(intj=0;j

if(arc[v][j]==1&&visited[j]==0){

cout<

visited[j]=1;

Q[++rear]=j;

}

}

}

4.运行与测试

5.总结与心得

通过该实验的代码编写与调试,熟悉了邻接矩阵在图结构中的应用,在调试过程中遇到很多的问题,在解决问题过程中也使我的写代码能力得到提升

二,邻接表的实现

1.实验目的

(1)掌握图的逻辑结构

(2)掌握图的邻接表存储结构

(3)验证图的邻接表存储及其遍历操作的实现

2.实验内容

(1)建立一个有向图的邻接表存储结构

(2)对建立的有向图进行深度优先遍历

(3)对建立的有向图进行广度优先遍历

3.设计与编码

ALGraph.h

#ifndefALGraph_H

#defineALGraph_H

constintMaxSize=10;

structArcNode

{

intadjvex;

ArcNode*next;

};

template

structVertexNode

{

DataTypevertex;

ArcNode*firstedge;

};

template

classALGraph

{

public:

ALGraph(DataTypea[],intn,inte);

~ALGraph();

voidDFSTraverse(intv);

voidBFSTraverse(intv);

private:

VertexNodeadjlist[MaxSize];

intvertexNum,arcNum;

};

#endif

ALGraph.cpp

#include

usingnamespacestd;

#include"ALGraph.h"

externintvisited[MaxSize];

template

ALGraph:

:

ALGraph(DataTypea[],intn,inte)

{

ArcNode*s;

inti,j,k;

vertexNum=n;arcNum=e;

for(i=0;i

{

adjlist[i].vertex=a[i];

adjlist[i].firstedge=NULL;

}

for(k=0;k

{

cout<<"Pleaseentertheedgeoftheserialnumberoftwovertices:

";

cin>>i>>j;

s=newArcNode;s->adjvex=j;

s->next=adjlist[i].firstedge;

adjlist[i].firstedge=s;

}

}

template

ALGraph:

:

~ALGraph()

{

ArcNode*p=NULL;

for(inti=0;i

{

p=adjlist[i].firstedge;

while(p!

=NULL)

{

adjlist[i].firstedge=p->next;

deletep;

p=adjlist[i].firstedge;

}

}

}

template

voidALGraph:

:

DFSTraverse(intv)

{

ArcNode*p=NULL;intj;

cout<

visited[v]=1;

p=adjlist[v].firstedge;

while(p!

=NULL)

{

j=p->adjvex;

if(visited[j]==0)DFSTraverse(j);

p=p->next;

}

}

template

voidALGraph:

:

BFSTraverse(intv)

{

intQ[MaxSize];

intfront=-1,rear=-1;

ArcNode*p=NULL;

cout<

while(front!

=rear)

{

v=Q[++front];

p=adjlist[v].firstedge;

while(p!

=NULL)

{

intj=p->adjvex;

if(visited[j]==0){

cout<

}

p=p->next;

}

}

}

ALGraph_main.cpp

#include

usingnamespacestd;

#include"ALGraph.cpp"

intvisited[MaxSize]={0};

intmain()

{

charch[]={'A','B','C','D','E'};

inti;

ALGraphALG(ch,5,6);

for(i=0;i

visited[i]=0;

cout<<"Depth-firsttraversesequenceis:

";

ALG.DFSTraverse(0);

cout<

for(i=0;i

visited[i]=0;

cout<<"Breadth-firsttraversesequenceis:

";

ALG.BFSTraverse(0);

cout<

return0;

}

4.运行与调试

5.总结与心得

通过该实验,掌握了图的邻接表存储结构

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2