首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
图的邻接表法深度优先搜索
时间:
2014-11-29 16:04:43
阅读:
158
评论:
0
收藏:
0
[点我收藏+]
标签:
搜索
malloc
结构
# include <stdio.h>
# include <stdlib.h>
# define True 1
# define False 0
# define Error -1
# define OK 1
# define MAX_VERTEX_NUM 20
int visited[MAX_VERTEX_NUM]; //定义标志数组
typedef char VertexData;
typedef enum{DG,DN,UDG,UDN} GraphKind;
typedef struct ArcNode{ //弧节点结构
int adjvex;
struct ArcNode *nextarc;
//
OtherInfo info;
}ArcNode;
typedef struct VertexNode{ //表头节点结构
VertexData data;
ArcNode *firstarc;
}VertexNode;
typedef struct {
VertexNode vertex[MAX_VERTEX_NUM];
int vexnum,arcnum;
GraphKind kind;
}AdjList;
int LocateVertex(AdjList *g, VertexData v) //求顶点位置函数
{
int j = Error,k;
for (k = 0; k < g->vexnum ; k++)
if (g->vertex[k].data == v)
{
j = k;break;
}
return j;
}
void Crtadjlist(AdjList *g) //创建邻接链表
{
int n,e,i,j,k;
char vt,vh;
ArcNode *p;
printf("请输入图的顶点个数和弧的个数\n");
scanf("%d%d", &n, &e);
g->vexnum = n;
g->arcnum = e;
printf("请输入顶点信息\n");
getchar();
for (i = 0; i < n; i++)
{
scanf("%c", &(g->vertex[i].data));
g->vertex[i].firstarc = NULL;
}
printf("请输入弧的两个顶点\n");
for (k = 0; k < e; k++)
{
getchar();
scanf("%c%c",&vt,&vh);
i = LocateVertex(g,vt);
j = LocateVertex(g,vh);
p = (ArcNode *)malloc(sizeof(ArcNode));
p->adjvex = j;
p->nextarc = g->vertex[i].firstarc;
g->vertex[i].firstarc = p;
}
}
void DepthFirstSearch(AdjList *g, int v0) //深度优先搜索
{
ArcNode *p;
printf("%c ", g->vertex[v0].data );
visited[v0] = True;
p = g->vertex[v0].firstarc;
while (p != NULL)
{
if (!visited[p->adjvex])
DepthFirstSearch(g, p->adjvex);
p = p->nextarc;
}
}
TraverseGraph(AdjList *g) //深搜
{
int vi;
for (vi = 0; vi < g->vexnum ; vi++)
visited[vi] = False; //初始化标志数组
for (vi = 0; vi < g->vexnum; vi++)
if (!visited[vi])
DepthFirstSearch(g,vi);
}
int main(void)
{
AdjList g;
Crtadjlist (&g);
TraverseGraph(&g);
printf("\n");
return 0;
}
图的邻接表法深度优先搜索
标签:
搜索
malloc
结构
原文地址:http://blog.csdn.net/java_oracle_c/article/details/41596031
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!