数据结构-图的基础代码
来源:互联网 发布:黄金现货交易软件 编辑:程序博客网 时间:2024/06/05 19:47
1.深度优先搜索(DFS)
启动函数:
#define MAX_VERTEX_NUM 1024bool visited[MAX_VERTEX_NUM];void DFSTraverse(Graph G){for(int v=0;v<G.vexnum;v++)visited[v]=FALSE;for(int v=0;v<G.vexnum;v++)if(!visited[v])DFS(G,v);}
递归函数:
void DFS(Graph G,int v){visit(v);//函数visit用于访问顶点v的相关信息,获取某信息,在此不细写visited[v]=TRUE;for(int w=FirstNeighbor(G,v);w>=0;w=NextNeighor(G,v,w))if(!visited[w])DFS(G,w);}
1.广度优先遍历(BFS)
启动函数:
#define MAX_VERTEX_NUM 1024bool visited[MAX_VERTEX_NUM];void BFSTraverse(Graph G){for(int i=0;i<G.vexnum;i++)visited[i]=FALSE;InitQueue(Q);for(int i=0;i<G.vexnum;i++)if(!visited[i])BFS(G,i);};
BFS函数:
void BFS(Graph G,int v){visit(v);visited[v]=TRUE;Enqueue(Q,v);while(!isEmpty(Q)){DeQueue(Q,v);for(w=FirstNeighbor(G,v);w>=0;w=NextNeighbor(G,v,w)){if(!visited[w]){visit(w);visited[w]=TRUE;EnQueue(Q,w);}}}}
3.设已给出图的邻接矩阵,要求将邻接矩阵转换为邻接表
#define MAX_VERTEX_NUM 1024#define INFINITY -65535void MGraphToALGraph(MGraph MG,ALGraph *ALG){ALG->vexnum=MG.vexnum;ALG->rcnum=MG.arcnum;for(int i=0;i<ALG->vexnum;i++){(ALG->vertices+i)->first=NULL;(ALG->vertices+i)->data=i;}for(int i=0;i<MG.exnum;i++){for(int j=0;j<MG.exnum;j++){if(MG.Edge[i][j]!=INFINITY){ArcNode *p=new ArcNode;p->data=j;p->next=(ALG->vertices+i)->frist;//头插法(ALG->vertices+i)->frist=p;}}}}
int CountInDegree(ALGraph *G,int k){int Indegree=0;for(int i=0;i<G->vexnum;i++){ArcNode *p=(G->vertices+i)->first;while(p){if(p->adjvex==k)Indegree++;p=p->next;}}return Indegree;}
5.有一个有向无环图的根节点R通过他出发的所有有向路径可以到达图的任意一个节点。设计算法使一个有向图作为输入假如此有向无环图有根,确认图的根节点。
#define MAX_VERTEX_NUM 1024bool visited[MAX_VERTEX_NUM];int GetRoot(MGgraph *G){for(int i=0;i<G.vexnum;i++){for(int j=0;j<G.vexnum;j++)visited[j]=FALSE;DFS(G,i);int vextLabel=0;for(int j=0;j<G.vexnum;j++){if(!visited[j])break;vexLabel++;}if(vexLabel==G.vexnum)return i;}}void DFS(Graph G,int v){visit(v);//函数visit用于访问顶点v的相关信息,获取某信息,在此不细写visited[v]=TRUE;for(int w=FirstNeighbor(G,v);w>=0;w=NextNeighor(G,v,w))if(!visited[w])DFS(G,w);}
阅读全文
0 0
- 数据结构-图的基础代码
- 数据结构-树的基础代码
- 数据结构:图的代码
- 数据结构基础(代码)
- 数据结构-排序基础代码
- 数据结构-图的进阶代码
- 数据结构-栈的一些基础操作c++代码
- 数据结构-线性表的一些基础操作 c++代码
- 基础数据结构代码及其应用
- 数据结构基础-数据结构的特性
- 数据结构之图:图的基础概念
- 数据结构基础(20) --图的存储结构
- 数据结构基础(20) --图的存储结构
- 数据结构基础6.1:图的表示方法
- 数据结构基础6.2:图的遍历
- 数据结构基础之图的种类
- 数据结构基础之图的存储结构
- 数据结构基础之图的遍历
- JAVA课程设计——华容道小游戏
- BIOS-SMI Introduction
- Bootstrap模态框相关的问题
- Java之HashMap源码解读
- spark python wordcount
- 数据结构-图的基础代码
- tp5中使用phpexcel生成表格
- ROS YOLOv2
- K、KB、M、MB、G、GB 、TB
- 进制转换
- C语言mooc小程序(1)
- 在github创建项目,以及pull到本地
- [HNOI2012]永无乡 SBT+启发式合并
- 7-21 求前缀表达式的值(25 分)