图的深度优先遍历
来源:互联网 发布:贴吧数据加载失败 编辑:程序博客网 时间:2024/04/27 18:42
#include<stdio.h>
#include<malloc.h>
#define OK 1
#define TRUE 1
#define MAX_VERTEX_NUM 20
typedef int InfoType;//弧相关信息类型
typedef char VertexType;//接点信息类型
typedef struct ArcNode{
int adjvex;
struct ArcNode *nextarc;//向下一条弧的指针
InfoType *info;
}ArcNode;
typedef struct VNode{
VertexType data;
ArcNode *firstarc;
}VNode,AdjList[MAX_VERTEX_NUM];
typedef struct ALGraph{
AdjList vertices;
int vexnum,arcnum;
int kind;
}ALGraph;
//辅助数组记录每个数据是否被访问过
int visited[MAX_VERTEX_NUM];
void Create_ALGraph(ALGraph &G)
{ ArcNode *p;
int i,j,x,y;
char v,w;
for(i=1;i<=G.vexnum;++i)
{printf("/n输入第%d个顶点的值:/n",i);
scanf("/n%c",&G.vertices[i].data);
G.vertices[i].firstarc=NULL;
printf("/n/n");
}
for(j=1;j<=G.arcnum;++j)
{printf("/n输入第%d条弧的弧尾弧头顶点(用逗号隔开):/n",j);
scanf("/n%c,%c",&v,&w);
printf("/n/n");
for(i=1;i<=G.vexnum;++i)
{if(G.vertices[i].data==v) x=i;
if(G.vertices[i].data==w) y=i;
}
p=(struct ArcNode*)malloc(sizeof(ArcNode));
p->adjvex=y;
p->nextarc=G.vertices[x].firstarc;
G.vertices[x].firstarc=p;
}
}
void Visit(ALGraph G,int i)
{printf("%c",G.vertices[i].data);
}
void DFS(ALGraph &G ,char v)
{ struct ArcNode *q;
int i;
for(i=1;i<=G.vexnum;++i)
{
if(G.vertices[i].data==v)
visited[i]; Visit(G,i);
}
for(q=G.vertices[i].firstarc;q;q=q->nextarc)
{if(!visited[q->adjvex]) DFS(G,G.vertices[q->adjvex].data);
}
}
void main()
{char v;
int m,s,d;
ALGraph G;
v=NULL;
printf("/n/n连通图的深度遍历/n");
printf("/n输入顶点数和边数(用逗号隔开):/n");
scanf("%d,%d",&s,&d);
G.vexnum=s;
G.arcnum=d;
printf("/n");
Create_ALGraph(G);
for(m=0;m<G.vexnum;++m)visited[m]=0;
printf("/n输入最先访问的顶点:");
scanf("/n%c",&v);
printf("/n/n");
printf("遍历结果为:/n");
DFS(G,v);
}
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的遍历-(深度优先&广度优先)
- 图的遍历:深度优先、广度优先
- eclipse4.3安装subversive以及connector后,看不到svn 客户端的问题
- eclipse4.3安装subversive以及connector后,看不到svn 客户端的问题
- 进项税
- 流媒体相关知识介绍 及其 RTP 应用 (转)
- 23种设计模式
- 图的深度优先遍历
- mygui与luaplus的绑定
- sql统计查询
- VTK 交互帖 日后整理用(1)
- MyEclipse6+Weblogic配置ssh环境经验
- linux c/c++ GDB教程详解
- SQL Server 自动 生成流水号 字符串主键
- 经典hql语句
- Extjs整合struts2的jsonplugin的方法和注意事项