采用邻接矩阵完成无向图的“建立、深度遍历、广度遍历”操作

采用邻接矩阵完成无向图的“建立、深度遍历、广度遍历”操作

ID:11264598

大小:48.50 KB

页数:5页

时间:2018-07-11

采用邻接矩阵完成无向图的“建立、深度遍历、广度遍历”操作_第1页
采用邻接矩阵完成无向图的“建立、深度遍历、广度遍历”操作_第2页
采用邻接矩阵完成无向图的“建立、深度遍历、广度遍历”操作_第3页
采用邻接矩阵完成无向图的“建立、深度遍历、广度遍历”操作_第4页
采用邻接矩阵完成无向图的“建立、深度遍历、广度遍历”操作_第5页
资源描述:

《采用邻接矩阵完成无向图的“建立、深度遍历、广度遍历”操作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、/*采用邻接矩阵完成无向图的“建立、深度遍历、广度遍历”操作*/#include"stdio.h"#include"string.h"#defineTRUE1#defineFALSE0#defineOVERFLOW-2#defineOK1#defineERROR0typedefintStatus;#defineINFINITYINT_MAX/*最大值“无穷”*/#defineMAX_VERTEX_NUM20/*最大顶点个数*/typedefintBoolean;typedefcharVertexType[20];typedefintVRType;/*****

2、*********以下为队列的操作************//****队列的类型定义****/typedefintQElemType;typedefstructQNode{QElemTypedata;structQNode*next;}QNode,*QueuePtr;typedefstruct{QueuePtrfront;QueuePtrrear;}LinkQueue;/****初始化队列****/StatusInitQueue(LinkQueue*Q){(*Q).front=(*Q).rear=(QueuePtr)malloc(sizeof(QNode))

3、;if(!(*Q).front)exit(OVERFLOW);(*Q).front->next=NULL;returnOK;}/****判断队列是否为空****/StatusQueueEmpty(LinkQueueQ){if(Q.front==Q.rear)returnTRUE;elsereturnFALSE;}/****入队列****/StatusEnQueue(LinkQueue*Q,QElemTypee){QueuePtrp;p=(QueuePtr)malloc(sizeof(QNode));if(!p)exit(OVERFLOW);p->data=e

4、;p->next=NULL;(*Q).rear->next=p;(*Q).rear=p;returnOK;}/****出队列****/StatusDeQueue(LinkQueue*Q,QElemType*e){QueuePtrp;if((*Q).front==(*Q).rear)returnERROR;p=(*Q).front->next;*e=p->data;(*Q).front->next=p->next;if((*Q).rear==p)(*Q).rear=(*Q).front;free(p);returnOK;}/**************以下为图

5、的操作************//*图的类型定义*/typedefstructArcCell{VRTypeadj;/*图中有1/0表示是否有边,网中表示边上的权值*//*InfoType*info;与边相关的信息*/}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typedefstruct{VertexTypevexs[MAX_VERTEX_NUM];/*顶点向量*/AdjMatrixarcs;/*邻接矩阵*/intvexnum,arcnum;/*图中当前顶点数和边数*/}MGraph;/*建立无向图的邻

6、接矩阵*/voidCreateGraph(MGraph*G){inti,j,k;VertexTypev1,v2;printf("InputMGvexnum,arcnum:");scanf("%d,%d",&(*G).vexnum,&(*G).arcnum);printf("Input%dvexs:",(*G).vexnum);for(i=0;i<(*G).vexnum;i++)/*输入顶点向量*/{scanf("%s",(*G).vexs[i]);}printf("vexslist");for(i=0;ivexnum;i++)/*输出顶点向量

7、*/puts(G->vexs[i]);for(i=0;i<(*G).vexnum;i++)/*邻接矩阵初始化*/for(j=0;j<(*G).vexnum;j++)(*G).arcs[i][j].adj=0;printf("Input%darcs(vivj):",(*G).arcnum);for(k=0;k<(*G).arcnum;k++)/*输入无权图的边*/{scanf("%s%s",v1,v2);i=LocateVex(*G,v1);j=LocateVex(*G,v2);(*G).arcs[i][j].adj=1;(*G).arcs[j][i]

8、=(*G).arcs[i][j];}}/*顶点在顶点

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。