收藏 分享(赏)

深度优先遍历文库.doc

上传人:j35w19 文档编号:6984000 上传时间:2019-04-29 格式:DOC 页数:4 大小:26.50KB
下载 相关 举报
深度优先遍历文库.doc_第1页
第1页 / 共4页
深度优先遍历文库.doc_第2页
第2页 / 共4页
深度优先遍历文库.doc_第3页
第3页 / 共4页
深度优先遍历文库.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、 #include #include#include #define TRUE 1#define FALSE 0#define OK 1#define ERROR 0typedef int Status; #define MAX_NAME 5 /* 顶点字符串的最大长度*/typedef int VRType;typedef char VertexTypeMAX_NAME;#define MAX_VERTEX_NUM 20 /* 最大顶点个数 */typedef struct ArcNodeint adjvex; /* 该弧所指向的顶点的位置 */struct ArcNode *nextarc

2、; /* 指向下一条弧的指针 */ArcNode; /* 表结点 */typedef structVertexType data; /* 顶点信息 */ArcNode *firstarc; /* 第一个表结点的地址,指向第一条依附该顶点的弧(或边)的指针 */VNode,AdjListMAX_VERTEX_NUM; typedef structAdjList vertices;int vexnum,arcnum; /* 图的当前顶点数和弧数 */ALGraph;int LocateVex(ALGraph G,VertexType u) /* 若 G中存在顶点 u,则返回该顶点在图中位置;否则返

3、回-1 */int i;for(i=0;iadjvex;elsereturn -1;int NextAdjVex(ALGraph G,int v,int w) ArcNode *p;p=G.verticesv.firstarc;while(pif(!p|!p-nextarc) return -1;else return p-nextarc-adjvex; Status CreateGraph(ALGraph *G)int i,j,k;VertexType va,vb;ArcNode *p;printf(“请输入图的顶点数,边数: “);scanf(“%d,%d“,printf(“请输入%d 个

4、顶点的值(adjvex=j;p-nextarc=(*G).verticesi.firstarc; /* 插在表头 */(*G).verticesi.firstarc=p;/* 因为无向图,产生第二个表结点 */p=(ArcNode*)malloc(sizeof(ArcNode);p-adjvex=i;p-nextarc=(*G).verticesj.firstarc; /* 插在表头 */(*G).verticesj.firstarc=p;return OK;int visitedMAX_VERTEX_NUM; /* 访问标志数组(全局量) */void(*VisitFunc)(char* v

5、); /* 函数变量(全局量) */void DFS(ALGraph G,int v) int w;visitedv=TRUE; VisitFunc(G.verticesv.data);for(w=FirstAdjVex(G,v);w=0;w=NextAdjVex(G,v,w)if(!visitedw) DFS(G,w);void DFSTraverse(ALGraph G,void(*Visit)(char*) int v;VisitFunc=Visit;for(v=0;vG.vexnum;+v)visitedv=FALSE;for(v=0;vG.vexnum;+v)if(!visitedv) DFS(G,v);void Output(char *i)printf(“%s “,i);void main()ALGraph g;CreateGraph(printf(“深度优先遍历的结果:n“);DFSTraverse(g,Output);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报