数据结构 邻接矩阵 DFS
来源:互联网 发布:windows xp开机蓝屏 编辑:程序博客网 时间:2024/06/02 06:28
#include <stdio.h>
#define MAXNODE 20
typedef struct
{
char vertexs[MAXNODE];
int acrs[MAXNODE][MAXNODE];
int vexnum,acrnum;
}GraphType;
int visited[MAXNODE];//全局声明变量。用来标记访问过的顶点
void CreateDNG(GraphType*G);//创建邻接矩阵的无向图
int LocatedVex(GraphType*G,char v);//查找顶点在一维数组里的位置
void dfsTraverse(GraphType*G);//非连接图的深度遍历
void DFS(GraphType*G,int v);//深度遍历
int main(void)
{
GraphType G;
CreateDNG(&G);
dfsTraverse(&G);
return 0;
}
int LocatedVex(GraphType*G,char v)
{
int i,k=-1;
for(i=0;i<G->vexnum;i++)
if(v==G->vertexs[i])
{
k=i;
break;
}
return k;
}
void CreateDNG(GraphType*G)
{
int i,j,k;
char a,b;
printf("请输入顶点和边的个数:");
scanf("%d %d",&G->vexnum,&G->acrnum);
getchar();
for(i=0;i<G->vexnum;i++)
for(j=0;j<G->vexnum;j++)
G->acrs[i][j]=0;//初始化
printf("请输入顶点的信息:");
for(i=0;i<G->vexnum;i++)
{
scanf("%c",&(G->vertexs[i]));
}
printf("请输入相关联的顶点:");
for(k=0;k<G->acrnum;k++)
{
scanf("%c,%c",&a,&b);
i= LocatedVex(G,a);
j= LocatedVex(G,b);
G->acrs[i][j]=1;
G->acrs[j][i]=1;
}
return ;
}
void dfsTraverse(GraphType*G)
{
int i;
for(i=0;i<G->vexnum;i++)
visited[i]=0;//所有顶点没有被访问过
for(i=0;i<G->vexnum;i++)
if(!visited[i])
DFS(G,i);
return ;
}
void DFS(GraphType*G,int v)
{
int i;
printf("当前访问的顶点为:%c\n",G->vertexs[v]);
visited[v]=1;
for(i=0;i<G->vexnum;i++)
if(!visited[i]&&G->acrs[v][i]==1)
DFS(G,i);
return ;
}
#define MAXNODE 20
typedef struct
{
char vertexs[MAXNODE];
int acrs[MAXNODE][MAXNODE];
int vexnum,acrnum;
}GraphType;
int visited[MAXNODE];//全局声明变量。用来标记访问过的顶点
void CreateDNG(GraphType*G);//创建邻接矩阵的无向图
int LocatedVex(GraphType*G,char v);//查找顶点在一维数组里的位置
void dfsTraverse(GraphType*G);//非连接图的深度遍历
void DFS(GraphType*G,int v);//深度遍历
int main(void)
{
GraphType G;
CreateDNG(&G);
dfsTraverse(&G);
return 0;
}
int LocatedVex(GraphType*G,char v)
{
int i,k=-1;
for(i=0;i<G->vexnum;i++)
if(v==G->vertexs[i])
{
k=i;
break;
}
return k;
}
void CreateDNG(GraphType*G)
{
int i,j,k;
char a,b;
printf("请输入顶点和边的个数:");
scanf("%d %d",&G->vexnum,&G->acrnum);
getchar();
for(i=0;i<G->vexnum;i++)
for(j=0;j<G->vexnum;j++)
G->acrs[i][j]=0;//初始化
printf("请输入顶点的信息:");
for(i=0;i<G->vexnum;i++)
{
scanf("%c",&(G->vertexs[i]));
}
printf("请输入相关联的顶点:");
for(k=0;k<G->acrnum;k++)
{
scanf("%c,%c",&a,&b);
i= LocatedVex(G,a);
j= LocatedVex(G,b);
G->acrs[i][j]=1;
G->acrs[j][i]=1;
}
return ;
}
void dfsTraverse(GraphType*G)
{
int i;
for(i=0;i<G->vexnum;i++)
visited[i]=0;//所有顶点没有被访问过
for(i=0;i<G->vexnum;i++)
if(!visited[i])
DFS(G,i);
return ;
}
void DFS(GraphType*G,int v)
{
int i;
printf("当前访问的顶点为:%c\n",G->vertexs[v]);
visited[v]=1;
for(i=0;i<G->vexnum;i++)
if(!visited[i]&&G->acrs[v][i]==1)
DFS(G,i);
return ;
}
0 0
- 数据结构 邻接矩阵 DFS
- 数据结构 邻接矩阵的BFS DFS
- 邻接矩阵dfs
- 邻接矩阵 DFS
- 复习(数据结构):图:c语言:邻接矩阵DFS和BFS
- 数据结构 邻接矩阵+邻接表+bfs+dfs+prim+Kruskal综合
- 邻接矩阵 数据结构
- 数据结构之图的邻接矩阵DFS(参考C博客—研究毛)
- 图的BFS和DFS在数据结构为邻接矩阵时的实现
- (编程训练)再回首,数据结构——无向图的邻接矩阵表示、DFS、BFS
- 【数据结构】DFS深度优先搜索(分别使用邻接矩阵、邻接表)
- [数据结构]图基于邻接矩阵的BFS与DFS的C语言简单实现
- 数据结构之图-邻接矩阵
- 【数据结构】邻接矩阵创建_CreateMGraph
- 数据结构---图---邻接矩阵
- 数据结构---图的邻接矩阵
- 图的遍历DFS【邻接矩阵】
- 图的遍历-邻接矩阵-dfs
- 关于 iOS 10 中 ATS 的问题
- zookeeper两个经典问题-带着问题看源码
- 算法导论学习日记(7)冒泡排序的递归实现
- 银联"押宝"二维码支付 背后还有一片纷争江湖
- arduino学习系列——DHT11温湿度传感器的使用
- 数据结构 邻接矩阵 DFS
- 小程序实现局部元素隐藏
- 索引器
- 互联网java软件工程师
- CentOS 6.6下Redis安装配置记录
- Delphi“尚未调用CoInitialize”解决方法
- Java架构师
- CVPR 2016-12-13
- ubuntu12.10上安装wine遇到的一些问题