无向图邻接表的深度优先遍历
来源:互联网 发布:mac卸载梦幻西游 编辑:程序博客网 时间:2024/05/23 18:12
#include<stdio.h> #include<malloc.h> #define Max 50 int visited[Max];//边表节点 typedef struct EdgeNode { int adjvex;//储存对应顶点的下标 int weight;//用于储存权值 struct EdgeNode * p;//指向下一个边表节点 }EdgeNode; //顶点表节点 typedef struct VertexNode { int date;//数据 EdgeNode * p;//指向边表节点 }VertexNode; //图节点 typedef struct Graph { VertexNode agjList[Max];//顶点表数组 int numVextexes,numEdges;//当前顶点数和边数 }Graph; //创建图的邻接表结构 void GreateGraph(Graph * G) { int i,j,k; EdgeNode * e; printf("输入顶点数和边数"); scanf("%d %d",&G->numVextexes,&G->numEdges); for(i=0;i<G->numVextexes;i++)//输入顶点信息 { printf("输入顶点的信息:"); scanf("%d",&G->agjList[i].date); G->agjList[i].p=NULL; } /* 1>利用头插法 2>因为无向图没有方向,所以创建边表节点的时候,要重复创建两次 并进行相反的操作 */ for(k=0;k<G->numEdges;k++)//建立边表 { printf("输入边(Vi,Vj)的下标i和j的值:"); scanf("%d %d",&i,&j); e=(EdgeNode *)malloc(sizeof(EdgeNode));//动态分配空间来储存边表节点 e->adjvex=j; e->p=G->agjList[i].p; G->agjList[i].p=e; e=(EdgeNode *)malloc(sizeof(EdgeNode)); e->adjvex=i; e->p=G->agjList[j].p; G->agjList[j].p=e; } } void DFS(Graph G,int i){EdgeNode * p;visited[i]=1;//表示已经被访问printf("%d\n",G.agjList[i].date);p=G.agjList[i].p;while(p){if(visited[p->adjvex]==0){DFS(G,p->adjvex);}p=p->p;}}void DFS_search(Graph G){int i;//初始化标志为0代表该顶点没有被访问for(i=0;i<G.numVextexes;i++){visited[i]=0;}//判断是否被访问,如果未被访问,就执行深度遍历操作for(i=0;i<G.numVextexes;i++){if(visited[i]==0){DFS(G,i);}}}int main(){Graph G;GreateGraph(&G);DFS_search(G);return 0;}
说明:
我在编写代码的时候发现了如果我顶点里面是存放的是char类型的数据的话,代码在执行过程中,会出现错误,我表示很疑问!
我会尽快找出这个问题;
0 0
- 无向图邻接表的深度优先遍历(DFS)
- 无向图邻接表的深度优先遍历
- 无向图的深度优先遍历和广度优先遍历(邻接链表)
- 无向图的构建及深度优先遍历---邻接表实现
- 无向图的邻接表深度优先算法
- 有向图邻接表的深度优先遍历
- c语言编程 输出一个无向图的邻接表,邻接矩阵,进行深度和广度优先遍历
- 无向图的深度优先遍历
- 无向图的深度优先搜索(采用邻接表存储)C++实现
- 无向图的深度优先搜索(采用邻接表存储)C++实现
- 无向图的构建及广度优先遍历---邻接表实现
- 图的深度优先遍历递归算法主针对邻接表有向图
- 无向网的深度优先遍历
- 邻接表-图的遍历-广度和深度优先遍历
- 基于邻接表的无向图的深度广度遍历实现
- 无向图_深度优先遍历
- 对无向图的深度优先遍历的理解
- 无向图的邻接矩阵 -- DFS - 深度优先遍历
- 一个经典 java 面试题引发的大案
- 犀利的异或求解
- 通过RMAN将数据库恢复到同类机异机
- Orcle存储过程与存储函数简单语法与java调用
- 单编后生成apk,使用adb安装apk
- 无向图邻接表的深度优先遍历
- Leetcode64 minimum path sum
- hdfs和hbase在linux中的一些基本操作
- Linux 五个最牛视频编辑软件
- hdu1816Get Luffy Out *
- 智慧北京:新闻菜单中ViewPager的touch处理
- 把程序自己关掉和程序进入后台,远程推送的 区别
- MySQL学习(一)
- c语言篇之字符串