已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/*图的邻接矩阵储存表示*#define INFINITY INT_MAX /最大值为无穷大#define MAX_VERTEX_NUM 20 /最大顶点个数#includeusing namespace std;typedef enum DG,DN,AG,ANGraphKind; /有向图,有向网,无向图,无向网typedef int Status;typedef int VRType;typedef char InfoType;typedef struct ArcCellVRType adj; /表示顶点关系,对于无向图有向图用0和1表示是否相邻,对于有向图有向网用权值类型表示InfoType* info; /该弧相关信息的指针ArcCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM;typedef struct /点的值char name;char* data;VertexTypeMAX_VERTEX_NUM; typedef structVertexType vexs; /顶点向量AdjMatrix arcs; /邻接矩阵int vexnum; /图的当前顶点数int arcnum; /图的当前弧数GraphKind kind; /图的种类标志MGraph;/*以下操作默认是无向网,即Kind = AG*/*顶点是名称字母。书上的是数字,例如v*Status LocateVex(MGraph G,char u)if(G.vexnum = 0) return -1; /图不存在int i;for(i = 0;i G.vexnum;i+)if(G. = u)return i;return -2; /图中不存在与u相等的点Status CreateGraph(MGraph& G)int i,j,k;VRType w; char v1,v2;char data50;cout 你想要创建几个顶点? G.vexnum;cout 你想要创建几条弧? G.arcnum;cout 依次输入顶点名称: endl;for(i = 0;i G.; /构造顶点向量for(i = 0;i G.vexnum;i+)for(j = 0;j G.vexnum;j+)G.arcsij.adj = INFINITY; /初始化邻接矩阵G. = NULL;for(k = 0;k G.arcnum;k+) /构造邻接矩阵cout v1 v2;cout 输入这条边的权值: w;cout 输入这条边的信息: data;i = LocateVex(G,v1);j = LocateVex(G,v2);G.arcsij.adj = w; G. = data;G.arcsji = G.arcsij;return 1;Status DestroyGraph(MGraph& G)G.vexnum = NULL;G.arcnum = NULL;return 1;char* GetVex(MGraph G,char v)if(G.vexnum = 0) return NULL;int i;i = LocateVex(G,v);if(i = 0) /判断是否是图上的顶点,后面的函数省略了这一步return G.vexsi.data;else return NULL;Status PutVex(MGraph& G,char v,char* value)if(G.vexnum = 0) return 0;int i;i = LocateVex(G,v);G.vexsi.data = value;return 1;/VertexType FirstAdjVex(MGraph G,char v) /返回第一个邻接顶点,邻接表操作/VertexType NextAdjVex(MGraph G,char v,char w) /邻接表操作Status InsertVex(MGraph& G,char v)if(G.vexnum = 0) return 0;int i;G.vexsG. = v;G.vexnum+;for(i = 0;i G.vexnum;i+)G.arcsiG.vexnum - 1.adj = INFINITY;G.arcsG.vexnum - 1i.adj = INFINITY;return 1;Status DeleteVex(MGraph& G,char v)if(G.vexnum = 0) return 0;int i,j,k;k = LocateVex(G,v);for(i = 0,j = 0;i G.vexnum;i+)if(G.arcsik.adj != INFINITY)j+;for(i = k;i data = NULL;G.vexnum-;G.arcnum = G.arcnum - j;return 1;Status InsertArc(MGraph& G,char v,char w)if(G.vexnum = 0) return 0;int i,j;VRType q;char data50;i = LocateVex(G,v);j = LocateVex(G,w); cout 输入这条边的权值: q;cout 输入这条边的信息: data;G.arcsij.adj = q;G. = data;G.arcsji = G.arcsij;G.arcnum = G.arcnum + 2;return 1;Status DeleteArc(MGraph& G,char v,char w)if(G.vexnum = 0) return 0;int i,j;i = LocateVex(G,v);j = LocateVex(G,w);G.arcsij.adj = INFINITY;G. = NULL;G.arcsji = G.arcsij;G.arcnum = G.arcnum - 2;return 1;Status Print(MGraph G)int i,j;for(i = 0;i G.vexnum ;i+)for(j = 0;j G.vexnum ;j+)cout G.arcs ij.adj ;cout endl;return 1;int main()int j;char i,c,d;MGraph G;CreateGraph(G);cout 此时矩阵为: endl;Print(G);cout i;j = LocateVex(G,i);cout i为第 j+1 个顶点 endl;cout 为两个点添加边,输入添加边的两个顶点: c d;InsertArc(G,c,d);cout 此时矩阵为: endl;Print(G);DeleteArc(G,c,d);cout 添加顶点V; endl;cout 此时矩阵
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《网络交易即时配送管理规范》
- 手术室急救护理查房
- 卫生消毒培训题库及答案
- 产业园项目电梯加装改造施工方案
- 2026年手术室护理实践指南试题及答案
- 4建设工程完工报告
- 职工社保缴费补贴申请
- 垃圾处理厂基坑支护施工方案
- 2026年中国刀头单头直榫开槽机市场调查研究报告
- 内科护理学副高考试历年真题及答案
- 2025中国腰椎间盘突出症诊疗指南
- 2025福建漳州闽投华阳发电有限公司招聘52人笔试参考题库附带答案详解
- 工程变更管理培训课件
- 胆石症中西医结合诊疗专家共识(2025年)解读 4
- 游泳馆预售活动方案
- 护理异位妊娠教学课件
- DB32/T 3761.27-2021新型冠状病毒肺炎疫情防控技术规范第27部分:阳性物品污染场所
- 人教A版高一数学必修第二册第六章《平面向量及其应用》单元练习题卷含答案解析
- 《计算机基础与应用(Office和WPS Office通-用)》中职全套教学课件
- 一《归园田居(其一)》公开课一等奖创新教案设计中职语文高教版(2023-2024)基础模块下册
- 雅马哈RX-V365使用说明书
评论
0/150
提交评论