1、最小单元路径 数据结构 实验 程序#include#include#define INFINITY 1000#define MAX_VERTEX_NUM 20typedef enum DG,DN,UDG,UDN Graphkind;typedef struct ArcCell int adj; char *info;ArcCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM;typedef struct char vexsMAX_VERTEX_NUM4; AdjMatrix arcs; int vexnum,arcnum; Graphkind kind;MGra
2、ph;int visitedMAX_VERTEX_NUM;void CreateGraph(MGraph *G);void CreateDG(MGraph *G); /有向图void CreateDN(MGraph *G); /有向网void CreateUDG(MGraph *G); /无向图void CreateUDN(MGraph *G); /无向网int LocateVex(MGraph *G,char v4);void First_next_adj(MGraph*G,int i);void dfs1(MGraph*G,int i);void bfs1(MGraph*G,int i);
3、void shortesPath_DIJ(MGraph*G,int v0,int pMAX_VERTEX_NUM,int dMAX_VERTEX_NUM);#define QUEUE_INIT_SIZE 100#define QUEUEINCREMENT 10typedef int QElemType;typedef struct QElemType*elem; int front; int rear; int queuesize; int incrementsize;SqQueue;void Initqueue_sq(SqQueue*q,int n);int Queuelength_sq(S
4、qQueue Q);int Dequeue_sq(SqQueue *Q,QElemType *e);void increment(SqQueue*Q);void Enqueue_sq(SqQueue *Q,QElemType e);int Getqueue_sq(SqQueue Q,QElemType *e);int Queueempty(SqQueue Q);void main() MGraph G; int i,j; char v4; int pMAX_VERTEX_NUMMAX_VERTEX_NUM,dMAX_VERTEX_NUM; CreateGraph(&G); for(i=0;iG
5、.vexnum;+i) for(j=0;jvexsi); visitedi=1; for(j=0;jvexnum;j+) if(i!=j&G-arcsij.adj!=INFINITY &!visitedj) dfs1(G,j);void bfs1(MGraph *G,int i) int k,j; SqQueue Q; for(j=0;jvexnum;j+) visitedj=0; Initqueue_sq(&Q,G-vexnum); printf(n%5s,G-vexsi); visitedi=1; Enqueue_sq(&Q,i); while(!Queueempty(Q) Dequeue
6、_sq(&Q,&k); for(j=0;jvexnum;j+) if(k!=j&G-arcskj.adj!=INFINITY &!visitedj) printf(%5s,G-vexsj); visitedj=1; Enqueue_sq(&Q,j); int LocateVex(MGraph *G,char v4) int i=0; while(ivexnum) if(strcmp(G-vexsi,v)=0) return i; i+; printf(n输入的顶点不存在!); return 0;void CreateUDG(MGraph *G) int i,j,k; char v14,v24;
7、 printf(输入vexnum,arcnum:); scanf(%d%d,&G-vexnum,&G-arcnum); printf(输入vexsi:n); getchar(); for (i=0;ivexnum;+i) gets(G-vexsi); for (i=0;ivexnum;+i) for (j=0;jvexnum;+j) G-arcsij.adj=INFINITY; G-arcsij.info=NULL; for (k=0;kvexnum;+k) printf(输入v1,v2:); scanf(%s%s,v1,v2); i=LocateVex(G,v1); j=LocateVex(
8、G,v2); printf(%4s%4s%8d%8dn,v1,v2,i,j); G-arcsij.adj=1; G-arcsji.adj=1; void CreateUDN(MGraph *G) int i,j,k,w; char v14,v24; printf(输入vexnum,arcnum:); scanf(%d%d,&G-vexnum,&G-arcnum); printf(输入vexsi:n); getchar(); for (i=0;ivexnum;+i) gets(G-vexsi); for (i=0;ivexnum;+i) for (j=0;jvexnum;+j) G-arcsij
9、.adj=INFINITY; G-arcsij.info=NULL; for (k=0;kvexnum;+k) printf(输入v1,v2,w:); scanf(%s%s%d,v1,v2,&w); i=LocateVex(G,v1); j=LocateVex(G,v2); printf(%4s%4s%8d%8dn,v1,v2,i,j); G-arcsij.adj=w; G-arcsji.adj=G-arcsij.adj; void CreateDG(MGraph *G) int i,j,k; char v14,v24; printf(输入vexnum,arcnum:); scanf(%d%d
10、,&G-vexnum,&G-arcnum); printf(输入vexsi:n); getchar(); for (i=0;ivexnum;+i) gets(G-vexsi); for (i=0;ivexnum;+i) for (j=0;jvexnum;+j) G-arcsij.adj=INFINITY; G-arcsij.info=NULL; for (k=0;kvexnum;+k) printf(输入v1,v2:); scanf(%s%s,v1,v2); i=LocateVex(G,v1); j=LocateVex(G,v2); printf(%4s%4s%8d%8dn,v1,v2,i,j
11、); G-arcsij.adj=1; void CreateDN(MGraph *G) int i,j,k,w; char v14,v24; printf(输入vexnum,arcnum:); scanf(%d%d,&G-vexnum,&G-arcnum); printf(输入vexsi:n); getchar(); for (i=0;ivexnum;+i) gets(G-vexsi); for (i=0;ivexnum;+i) for (j=0;jvexnum;+j) G-arcsij.adj=INFINITY; G-arcsij.info=NULL; for (k=0;karcnum;+k) printf(输入v1,v2,w:); scanf(%s%s%d,v1,v2,&w); i=LocateVex(G,v1); j=LocateVex(G,v2); printf(%4s%4s%8d%8dn,v1,v2,i,j); G-arcsij.adj=w; void CreateGraph(MGraph *G) int k; printf(输入图的类型nDG-0,DN-1,UDG-2,UDN-3:); scanf(%d,&k); switch(k) case 0:G-
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1