图的深度遍历和广度遍历以及最小生成树.docx

图的深度遍历和广度遍历以及最小生成树.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图的深度遍历和广度遍历以及最小生成树

//本程序主要包含以下功能//采用邻接矩阵构造图//图的深度遍历和广度遍历//采用普里姆算法和克鲁斯卡尔算法构造最小生成树#includestdio.h#includestdlib.h #define INFINITY 999#define MAX_VERTEX_NUM 20#define OK 1#define ERROR -1typedef char VertexType;typedef char InfoType;typedef VertexType QElemType;bool visited[MAX_VERTEX_NUM];// 访问标志数组 typedef struct{ /*辅助数组*/ VertexType adjvex; int lowcost;}closedge[MAX_VERTEX_NUM];typedef struct {int begin;int end;int flag;int weight;}edge; edge edges[50];typedef struct ArcCell{int adj;InfoType *info;}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typedef struct{VertexType vexs[MAX_VERTEX_NUM];AdjMatrix arcs;int vexnum,arcnum;} MGraph;typedef struct QNode{QElemType data;struct QNode *next;}QNode,*QueuePtr;typedef struct {QueuePtr front;QueuePtr rear;}LinkQueue;int InitQueue(LinkQueue Q){Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode)); if(!Q.front) return ERROR;Q.front-next=NULL;return OK;}int DestroyQueue(LinkQueue Q){while(Q.front){Q.rear=Q.front-next;free(Q.front);Q.front=Q.rear;}return OK;}//DestroyQueueint EnQueue(LinkQueue Q,QElemType e){QueuePtr p; //p=(QueuePtr)malloc(sizeof(QNode));if(!p) return ERROR;p-data=e;p-next=NULL;Q.rear-next=p;Q.rear=p;return OK;}int DeQueue(LinkQueue Q,QElemType e){if(Q.front==Q.rear) return ERROR;QueuePtr p;p=Q.front-next;e=p-data;Q.front-next=p-next;if(Q.rear==p) Q.rear=Q.front;free(p);return OK;}int QueueEmpty(LinkQueue Q){if(Q.rear==Q.front) return 1;else return 0;} int LocateVex(MGraph G,VertexType u){int i;for(i = 0; i G.vexnum; ++i)if( u==G.vexs[i] )return i;return -1;}int FirstAdjVex(MGraph G,int k){ if(k=0 kG.vexnum){ //k合理 for(int i=0;iG.vexnum;i++) if(G.arcs[k][i].adj!=INFINITY) return i; } return -1; } //图G中顶点i的第j个邻接顶点的下一个邻接顶点 int NextAdjVex(MGraph G,int i,int j){ if(i=0 iG.vexnum j=0 jG.vexnum){ //i,j合理 for(int k=j+1;kG.vexnum;k++) if(G.arcs[i][k].adj!=INFINITY) return k; } return -1; } int CreateUDN(MGraph G) {// 算法 7.2 // 采用数组(邻接矩阵)表示法,构造无向网G。 int i,j,k,w,p=0; VertexType v1,v2; printf

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档