文档详情

数据结构图的遍历.doc

发布:2019-10-20约4.18千字共5页下载文档
文本预览下载声明
#include stdlib.h #include stdio.h #include malloc.h #define INFINITY 32767 #define MAX_VERTEX_NUM 20 typedef enum{FALSE,TRUE}visited_hc; typedef enum{DG,DN,UDG,UDN}graphkind_hc; typedef struct arccell_hc {int adj; int *info; }arccell_hc,adjmatrix_hc[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; typedef struct {char vexs[MAX_VERTEX_NUM]; adjmatrix_hc arcs; int vexnum,arcnum; graphkind_hc kind; }mgraph_hc; typedef struct arcnode_hc {int adjvex; struct arcnode_hc *nextarc; int *info; }arcnode_hc; typedef struct vnode_hc {char data; arcnode_hc *firstarc; }vnode_hc,adjlist_hc[MAX_VERTEX_NUM]; typedef struct {adjlist_hc vertices; int vexnum,arcnum; graphkind_hc kind; }algraph_hc; int locatevex_hc(mgraph_hc*g,char v) {int i,k=0; for(i=0;ig-vexnum;i++) if(g-vexs[i]==v){k=i;i=g-vexnum;} return(k);} mgraph_hc*createudg_hc() {mgraph_hc*g; char v1,v2; int i,j,incinfo; g=(mgraph_hc*)malloc(sizeof(mgraph_hc)); g-kind=UDG; printf(请输入图顶点数、边数及该边相关信息:); scanf(%d %d %d,g-vexnum,g-arcnum,incinfo); printf(请输入顶点信息:);flushall(); for(i=0;ig-vexnum;++i)scanf(%c,g-vexs[i]); for(i=0;ig-vexnum;++i) for(j=0;jg-vexnum;++j) g-arcs[i][j].adj=0; printf(输入一条边依附的顶点:\n); flushall();scanf(%c%c,v1,v2); while(v1!=#v2!=#) {i=locatevex_hc(g,v1);j=locatevex_hc(g,v2); g-arcs[i][j].adj=1; if(incinfo)g-arcs[i][j].info=incinfo; g-arcs[j][i].adj=g-arcs[i][j].adj; g-arcs[j][i].info=g-arcs[i][j].info; flushall();scanf(%c%c,v1,v2);} return(g);} visited_hc vis[MAX_VERTEX_NUM]; int firstadjvex_hc(mgraph_hc*g,int v) {int i,k=-1; for(i=0;ig-vexnum;i++) if(g-arcs[v][i].adj==1){k=i;i=g-vexnum;} return(k);} int nextadjvex_hc(mgraph_hc*g,int v,int w) {int i,k=-1; for(i=0;ig-vexnum;i++) if(g-arcs[v][i].adj==1iw){k=i;i=g-vexnum;} return(k);} void dfs_hc(mgraph_hc*g,int v) {int w; vis[v]=TRUE; printf(%c,g-vexs[v]); for(w=firstadjvex_hc(g,v);w=0;w=nextadjvex_hc(g,v,w)) if(!vis[w])dfs_hc(g,w);} void dfstraverse_hc(mgraph_hc*g) {int v,i;char f; for(v=0;vg-vexnum;v++)vis[v]=FALSE; printf(输入遍历开始顶点:);flushall();scanf(%c,f); i=locatevex_hc(g,f
显示全部
相似文档