孙文振实验六文档格式.docx
- 文档编号:21623841
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:10
- 大小:46.76KB
孙文振实验六文档格式.docx
《孙文振实验六文档格式.docx》由会员分享,可在线阅读,更多相关《孙文振实验六文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
三、实验要求
1.按实验内容编写实验的程序,主程序以菜单形式运行。
2.上机调试运行本程序。
3.保存和打印出程序的运行结果,并结合程序进行分析。
4.提交实验报告。
#ifndefGRAPH_H//定义头文件
#defineGRAPH_H
#include<
string>
//引入标准库中的头文件
usingnamespacestd;
constintMaxSize=12;
//图中最多顶点个数
externintvisited[MaxSize];
template<
classT>
classMGraph
{
public:
MGraph(Ta[],intn,inte);
//构造函数,初始化具有n个顶点的图
voidDFSTraverse(intv);
//深度优先遍历图
voidBFSTraverse(intv);
//广度优先遍历图
voidnodedgree();
//求结点出度
voidPutVex();
//输出各顶点的信息
private:
Tvertex[MaxSize];
//存放图中顶点的数组
intarc[MaxSize][MaxSize];
//存放图中边的数组
intvertexNum,arcNum;
//图的顶点数和边数
};
#endif
iostream>
#include<
#include"
graph2.h"
//引入头文件
/*
*前置条件:
图不存在
*输入:
存储顶点信息的数组、顶点个数以及边的个数
*功能:
构造一个图
*输出:
无
*后置条件:
*/
MGraph<
T>
:
MGraph(Ta[],intn,inte)
vertexNum=n;
//顶点数
arcNum=e;
//边数
inti,j,k;
for(i=0;
i<
vertexNum;
i++)
vertex[i]=a[i];
for(i=0;
i++)//初始化邻接矩阵
for(j=0;
j<
j++)
arc[i][j]=0;
for(k=0;
k<
arcNum;
k++)//依次输入每一条边,并修改邻接矩阵的相应元素
{
cout<
<
"
请输入第"
<
k<
条边依附的两个顶点的序号i和j"
endl;
cin>
>
i>
j;
//边依附的两个顶点的序号
arc[i][j]=1;
//置有边标志
}
}
图已存在
输出图中所有顶点的数据信息
图中所有顶点的数据信息
图保持不变
voidMGraph<
PutVex()//取所有顶点
{//假设源点是第0个顶点,即顶点序号是0
inti=0;
for(i=0;
i<
i++)
{//输出图中所有的顶点
cout<
vertex[i]<
"
\n"
;
遍历的起始顶点v
从顶点v出发深度优先遍历图
图中顶点的一个线性排列
*/
DFSTraverse(intv)//深度优先遍历图
if(v>
vertexNum)throw"
位置"
//如果输入不正确抛出异常
vertex[v]<
visited[v]=1;
//已访问v顶点
for(intj=0;
if(arc[v][j]<
10000&
&
visited[j]==0)
DFSTraverse(j);
}
}
从顶点v出发广度优先遍历图
BFSTraverse(intv)//广度优先遍历图
intfront=-1;
intrear=-1;
//初始化队列,假设队列采用顺序存储且不会发生溢出
//被访问顶点入队
intQ[MaxSize];
Q[++rear]=v;
while(front!
=rear)
v=Q[++front];
//将队头元素出队并送到v中
if(arc[v][j]<
visited[j]==0){
vertex[j]<
visited[j]=1;
Q[++rear]=j;
功能:
求每个结点的出度
图中顶点的出度
nodedgree()
{
k=0;
for(j=0;
j<
j++)
if(arc[i][j]!
=0)
k++;
第"
顶点的出度为:
k;
graph2.cpp"
//引用graph.cpp文件
intmain(intargc,char*argv[])
inti,m,n;
intchoose=1;
//控制
intwhich;
//功能选择变量
请输入顶点的个数"
n;
//输入顶点的个数
请输入边的个数"
m;
//输入边的个数
stringvname[10];
//各顶点数组
请输入各顶点的信息"
cin>
vname[i];
MGraph<
g(vname,n,m);
//调用Graph程序
输出图的各顶点的值"
g.PutVex();
//输出图的各顶点的值
while(choose==1)//控制
{
1.深度优先遍历"
//输入所要进行的操作的序号
2.需要广度优先遍历"
3.求各顶点的出度"
0.退出"
which;
switch(which)//功能选择
case1:
//深度遍历
cout<
请输入顶点:
for(i=0;
MaxSize;
visited[i]=0;
intmm;
cin>
mm;
try
{
g.DFSTraverse(mm);
}
catch(char*)
输入失败!
endl;
break;
case2:
//广度遍历
visited[i]=0;
intmr;
mr;
g.BFSTraverse(mr);
}
case3:
//求各顶点的出度
g.nodedgree();
case0:
//退出
choose=0;
break;
}
return0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 孙文振 实验六 实验