图的深度优先搜索(采用邻接表存储方式)
来源:互联网 发布:西门子828d编程实例 编辑:程序博客网 时间:2024/05/19 19:33
#include <stdio.h>#include <stdlib.h>#define MAXSIZE 20int visited[MAXSIZE];typedef struct node{ int adjvex; struct node * next;}Node;typedef struct{ int vertex; Node * first;}VNode;void create(VNode g[],int n,int e){ //创建无向图的邻接表 Node * p; int i,j; for(int t=0;t<n;t++){ g[t].vertex = t; g[t].first = NULL; } for(int k=0;k<e;k++){ printf("请输入连通边i->j\n"); scanf("%d,%d",&i,&j); p = (Node *)malloc(sizeof(Node)); p->adjvex = j; p->next = g[i].first; g[i].first = p; p = (Node *)malloc(sizeof(Node)); p->adjvex = i; p->next = g[j].first; g[j].first = p; }}void DFS(VNode g[],int j){ Node * p; printf("%4d",g[j].vertex); visited[j] = 1; p = g[j].first; while(p != NULL){ if(!visited[p->adjvex]){ DFS(g,p->adjvex); }else{ p = p->next; } }}void DFSprint(VNode g[],int n){ //深度优先搜索进行遍历 for(int i=0;i<n;i++){ visited[i] = 0; } for(int j=0;j<n;j++){ if(!visited[j]){ DFS(g,j); } }}int main(){ VNode g[MAXSIZE]; int n,e; printf("请输入节点的个数!\n"); scanf("%d",&n); printf("请输入边的个数\n"); scanf("%d",&e); create(g,n,e); printf("深度优先搜索结果:\n"); DFSprint(g,n); return 0;}
0 0
- 图的深度优先搜索(采用邻接表存储方式)
- 无向图的深度优先搜索(采用邻接表存储)C++实现
- 无向图的深度优先搜索(采用邻接表存储)C++实现
- 图的广度优先搜索(采用邻接表存储方式)
- 无向图的广度优先搜索(采用邻接表存储)C++实现
- 无向图的广度优先搜索(采用邻接表存储)C++实现
- 图的深度优先搜索(邻接表)
- 邻接表图的深度优先搜索
- 图的深度、广度优先搜索(邻接表)
- 图的深度优先搜索(邻接表)
- 图的深度优先搜索/广度优先搜索(邻接表实现)
- 基于邻接表的深度优先搜索
- 邻接表的深度优先搜索(DFS)
- 图基本算法 图搜索基于邻接表的(广度优先、深度优先)
- 图的邻接表法深度优先搜索
- 图的邻接表创建和深度优先搜索
- 图深度优先搜索广度优先搜索,邻接表
- 图的深度优先和广度优先遍历算法(用邻接表作为存储结构)
- STL运用的C++技术(6)——函数对象
- references non-existing project XXX, launch configuration问题的解决办法
- 性能测试工具HyperPacer的Groovy取样器和While控制器的组合应用
- jpa对存储过程的调用
- 练习3-Q
- 图的深度优先搜索(采用邻接表存储方式)
- 常用js方法总结
- duilib CTextUI 纯字母不能换行
- iOS开发集成Zbar编译报错
- 工作中常用到的一些java工具类
- 运维
- SDUT 2139 图结构练习——BFS——从起始点到目标点的最短步数(BFS+VECTOR)
- Linux之使用inotify监控文件
- CollectionView-基本方法