- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图的应用______深度优先_和_广度优先有哪些信誉好的足球投注网站遍历
华##############学院 数据结构 实验报告
2011~2012学年 第 二 学期 2011级 计算机 专业
班级: 学号: 姓名:
实验四 图的应用
实验题目:
图的应用——深度优先/广度优先有哪些信誉好的足球投注网站遍历
实验内容:
很多涉及图上操作的算法都是以图的遍历操作为基础的。试编写一个算法,实现图的深度优先和广度优先有哪些信誉好的足球投注网站遍历操作。
要求:以邻接矩阵或邻接表为存储结构(学号为单号的同学以邻接矩阵为存储结构,双号的同学以邻接表为存储结构)建立无向连通图,从键盘上输入指定的顶点为起始点,实现图的深度优先及广度优先有哪些信誉好的足球投注网站遍历,并输出遍历的结点序列。
提示:首先,根据输入的顶点总数和边数,构造无向图,然后以输入的顶点为起始点,进行深度优先、广度优先有哪些信誉好的足球投注网站遍历,并输出遍历的结果。
程序源代码:
#define maxvex 100
#includeiostream.h
typedef struct edgenode
{
int adjvex;
int value;
edgenode* next;
}ArcNode;
typedef struct vexnode
{ char data;
ArcNode * firstarc;
}VHeadNode;
typedef struct
{
int n,e;
VHeadNode adjlist[maxvex];
}AdjList;
int CreateAdjList(AdjList* g);
void showAdjList(AdjList* g);
void BFS(AdjList* g,int vi);
void DFS(AdjList* g,int vi,int visited[]);
void main()
{ AdjList g;
CreateAdjList(g);
}
void DFS(AdjList* g,int vi,int visited[maxvex])
{
ArcNode* p;
visited[vi]=1;
coutvi ;
p=g-adjlist [vi].firstarc ;
while(p)
{
if(visited[p-adjvex ]==0)
DFS(g,p-adjvex,visited );
p=p-next ;
}
}
void BFS(AdjList* g,int vi)
{
int i,v,visited[maxvex];
int qu[maxvex],front=0,rear=0;
ArcNode *p;
for(i=0;ig-n ;i++)
visited[i]=0;
visited[vi]=1;
coutvi ;
rear=(rear+1)%maxvex;
qu[rear]=vi;
while(front!=rear)
{
front=(front+1)%maxvex;
v=qu[front];
p=g-adjlist [v].firstarc ;
while(p)
{
if(visited[p-adjvex ]==0)
{
visited[p-adjvex ]=1;
coutp-adjvex ;
rear=(rear+1)%maxvex;
qu[rear]=p-adjvex ;
}
p=p-next ;
}
}
}
//显示创建的无向图
void showAdjList(AdjList* g)
{
int i;
ArcNode *p;
cout图的邻接表表示如下endl;
for(i=0;ig-n;i++)
{
cout [i,g-adjlist [i].data ]=;
p=g-adjlist [i].firstarc ;
while(p)
{
cout (p-adjvex ,p-value )-;
p=p-next ;
}
coutNULLendl;
}
}
//以邻接表创建无向图
int CreateAdjList(AdjList* g)
{
int i,b,t,w;
ArcNode *p,*q;
g=new AdjList;
cout输入顶点数(n),边数(e)endl;
cing-n g-e ;
for(i=0;ig-n ;i++)
{
cout序号为i 的顶点信息: ;
cing-adjlist [i].data ;
g-adjlist [i].firstarc =NULL;
}
文档评论(0)