数据结构实验报告图实验Word格式文档下载.docx
《数据结构实验报告图实验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告图实验Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
classDataType>
classMGraph
{
public:
MGraph(DataTypea[],intn,inte);
~MGraph(){
}
voidDFSTraverse(intv);
voidBFSTraverse(intv);
private:
DataTypevertex[MaxSize];
intarc[MaxSize][MaxSize];
intvertexNum,arcNum;
};
#endif
MGraph.cpp
#include<
iostream>
usingnamespacestd;
#include"
MGraph.h"
externintvisited[MaxSize];
MGraph<
DataType>
:
MGraph(DataTypea[],intn,inte)
inti,j,k;
vertexNum=n,arcNum=e;
for(i=0;
i<
vertexNum;
i++)
vertex[i]=a[i];
i<
for(j=0;
j<
j++)
arc[i][j]=0;
for(k=0;
k<
arcNum;
k++)
{
cout<
<
"
Pleaseentertwovertexsnumberofedge:
;
cin>
>
i>
j;
arc[i][j]=1;
arc[j][i]=1;
}
voidMGraph<
DFSTraverse(intv)
cout<
vertex[v];
visited[v]=1;
for(intj=0;
if(arc[v][j]==1&
&
visited[j]==0)
DFSTraverse(j);
BFSTraverse(intv)
intQ[MaxSize];
intfront=-1,rear=-1;
Q[++rear]=v;
while(front!
=rear)
v=Q[++front];
for(intj=0;
j<
if(arc[v][j]==1&
visited[j]==0){
cout<
vertex[j];
visited[j]=1;
Q[++rear]=j;
}
MGraph_main.cpp
4.运行与测试
5.总结与心得
通过该实验的代码编写与调试,熟悉了邻接矩阵在图结构中的应用,在调试过程中遇到很多的问题,在解决问题过程中也使我的写代码能力得到提升
二,邻接表的实现
(2)掌握图的邻接表存储结构
(3)验证图的邻接表存储及其遍历操作的实现
(1)建立一个有向图的邻接表存储结构
(2)对建立的有向图进行深度优先遍历
(3)对建立的有向图进行广度优先遍历
3.设计与编码
ALGraph.h
#ifndefALGraph_H
#defineALGraph_H
structArcNode
intadjvex;
ArcNode*next;
structVertexNode
DataTypevertex;
ArcNode*firstedge;
classALGraph
ALGraph(DataTypea[],intn,inte);
~ALGraph();
VertexNode<
adjlist[MaxSize];
ALGraph.cpp
#include"
ALGraph.h"
ALGraph<
ALGraph(DataTypea[],intn,inte)
ArcNode*s;
vertexNum=n;
arcNum=e;
adjlist[i].vertex=a[i];
adjlist[i].firstedge=NULL;
Pleaseentertheedgeoftheserialnumberoftwovertices:
s=newArcNode;
s->
adjvex=j;
s->
next=adjlist[i].firstedge;
adjlist[i].firstedge=s;
~ALGraph()
ArcNode*p=NULL;
for(inti=0;
p=adjlist[i].firstedge;
while(p!
=NULL)
{
adjlist[i].firstedge=p->
next;
deletep;
p=adjlist[i].firstedge;
}
voidALGraph<
intj;
adjlist[v].vertex;
p=adjlist[v].firstedge;
while(p!
j=p->
adjvex;
if(visited[j]==0)DFSTraverse(j);
p=p->
p=adjlist[v].firstedge;
intj=p->
if(visited[j]==0){
adjlist[j].vertex;
visited[j]=1;
Q[++rear]=j;
p=p->
ALGraph_main.cpp
ALGraph.cpp"
intvisited[MaxSize]={0};
intmain()
charch[]={'
A'
'
B'
C'
D'
E'
inti;
ALGraph<
char>
ALG(ch,5,6);
MaxSize;
visited[i]=0;
Depth-firsttraversesequenceis:
ALG.DFSTraverse(0);
endl;
Breadth-firsttraversesequenceis:
ALG.BFSTraverse(0);
return0;
4.运行与调试
通过该实验,掌握了图的邻接表存储结构