已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南省邵阳市二中等校2023-2024学年高二下学期入学考试联考生物试题
- 餐饮服务基本技能-铺台布(餐厅服务技能课件)
- 造林用工合同
- 秋冬季健身房卫生指南
- 森林病虫害防治检查记录
- 高血压病例分析-健康保险影响
- 中医治疗高血压的滴丸应用
- 糖尿病药物选择指南:全方位解析
- 草原病虫害防治记录表
- 抗高血压药企市场扩张投资
- 运输公司新版制度上墙文档
- 影视艺术导论教材课件汇总完整版ppt全套课件最全教学教程整本书电子教案全书教案课件合集
- TSG-R0005-2022《移动式压力容器安全技术监察规程》(2022版)
- 海天注塑机技术参数表
- 柱下钢筋混凝土独立基础设计方案
- 泌尿外科静脉血栓栓塞症的风险评估与预防课件
- 初中生英语听说调查问卷及分析
- JJF(闽) 1053-2012 混凝土氯离子电通量和扩散系数测定仪校准规范
- 幼儿数字描红0-10(A4打印)方格
- 轮扣式模板支撑架专项施工方案
- 五方会审会议纪要
评论
0/150
提交评论