下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/邻接矩阵存储无向图 include using namespace std;/定义最大顶点数 define MVNum 128 /定义状态类型#define Status int /函数结果状态代码#define#define#define#define#define#define#define#define#define#define#define#defineOK 1ERROR 0INFEASIBLE 0EXISTED 2 VerTexType int ArcType int/定义图的结构体类型 typedef struct VerTexType vexs MVNum ; /顶点集因为顶
2、点存储序号范围为lMVNumArcType arcs MVNum MVNum ;/邻接矩阵int vexnum, arcnum; /图当前的顶点数和边数 AMGraph;/定义队列的结构体类型typedef struct int head, tail;int sign;/sign标签用于区分当head与tail相等时,是队空状态还是队满状态int dateMVNum; Queue;int oddCount = 0;/度为奇数的顶点个数int visitedMVNum = 0 ;void InitQueue(Queue &q) q.head = q.tail = 1; q.sign = 0;)
3、bool isFull(Queue q) if (q.head = q.tail & q,sign) return true;else return false;)bool isEmpty(Queue q) if (q.head = q.tail & !q.sign)return true; elsereturn false;Status EnQueue(Queue &q, int v) if (isFull(q)return ERROR; q.dateq.tail = v;q.tail = q.tail+%MVNum;q.sign = 1;return OK;)Status DeQueue(
4、Queue &q, int &v) if (isEmpty(q)return ERROR; v = q.dateq.head;q.head = q.head+%MVNum; q.sign = 0;return OK;)/采用邻接矩阵表示法,创立无向图graphStatus createUDN(AMGraph &graph, int vexnum, int arcnum) graph. vexnum = vexnum;/初始化图的总顶点数graph. arcnum = arcnum;/初始化图的总边数if (graph.vexnum = MVNum) return ERROR; /顶点数超过最大
5、允许范围,返回错误代码。(注意数组下标从0开始) for (int i = 0; i graph.vexnum; i + + ) /依次输入顶点信息 graph.vexsi = i;)for (int i = 0; i graph.vexnum; i + + ) /初始化所有边的权值为0,表示边不存在for (int j = 0; j graph.vexnum; j+) graph.arcsij = 0;) ) int vex_onez vex_two;/一条边依附的两个顶点 vex_one 和 vex_twofor (int i = 0; i vex_one vex_two;graph.ar
6、cs vex_one - 1 vex_two - 1 = 1;/表权值为 1,表示边存在graph.arcsvex_two - 1vex_one - 1 = 1; return OK; /创立成功,返回成功代码。 )/定义打印无向图函数void printUDN(AMGraph graph) cout 0 ” n;for (int i = 0; i graph.vexnum; i+) /在第一行打印顶点信息 cout graph.vexsi + 1 n n;)cout endl;for (int i = 0; i graph.vexnum; i+) /输出边的信息(每行第一个数字为顶点)(注意
7、0号顶点不输出) cout graph.vexs i + 1 H;/输出该行对应的顶点for (int j = 0; j graph.vexnum; j+) /输出该行顶点对应所有边信息 cout graph.arcsij n;) cout endl;)/输出结束)/从顶点v出发,广度优先遍历图G,判断G是否存在EL路径/访问顶点v/顶点v入队/队头元素出队/访问顶点v/顶点v入队/队头元素出队int IsExistEL(AMGraph G, int v) visitedv = true;Queue Q;InitQueue(Q);EnQueue(Q, v);while (!isEmpty(Q)
8、 DeQueue(Q, v);int degree = 0; /记录当前顶点的度数for (int w = 0; w 0) degree+;if (!visitedw) visitedw = true; EnQueue(Q, w);/存在顶点v到顶点w的边/顶点v的度数加1/w是V尚未访问的邻接顶点/访问顶点W/顶点W入队/end if /end forif (degree % 2 = 1) /顶点v的度数为奇数oddCount+;/度数为奇数的顶点数+1/度数为奇数的顶点数超过2个,一定不存在EL路径/度数为奇数的顶点数超过2个,一定不存在EL路径if (oddCount2)return 0
9、; /end if/end whileif (oddCount % 2 = 0) return 1;/度数为奇数的顶点数是偶数,存在EL路径else return 0;)int main() int n, m;/n个顶点和m条边cout ”请输入顶点的数量n和边的数量m (空格分隔,下同):cin n m; /输入n和m的值 AMGraph G;cout ”请依次输入m条边所依附的起点和终点:n”; createUDN(Gz n, m);/打印图的信息 printUDN(G); cout ”请输入出发顶点:bH; int v;cin v;int result = IsExistEL(G, v); if (result) cout ”存在 EL 路径” endl; else cout 不存在 EL 路径” endl; )system(pause); return 0;)测试用例展示(以程序一次运行周期为例) 输入数据: 4 3 1 2 2 3 1 4输出结果: 0 12 3 4 10 10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024高考历史一轮复习方案专题十四古今中国的科技和文艺第31讲古代中国的科技与文化成就教学案+练习人民版
- 2024高考地理一轮复习第二章第2讲气压带和风带教案含解析新人教版
- 小学“五项管理”工作实施方案
- 墙面石材铺装标准及方案
- 二零二五年度人才公寓租赁及配套设施协议3篇
- 外研版(一起)小学英语一年级上册module-3-unit-2-point
- 电视事业个人年终总结汇报
- 2024年浙江邮电职业技术学院高职单招语文历年参考题库含答案解析
- 三峡工程对长江三角洲冲淤影响教案资料
- 火灾事故现场处置方案培训试题
- 《榜样9》观后感心得体会二
- 2024年公安机关理论考试题库附参考答案(基础题)
- 2024年安全生产法律、法规、标准及其他要求清单
- 2023年高考文言文阅读设题特点及备考策略
- 抗心律失常药物临床应用中国专家共识
- 考级代理合同范文大全
- 2024解析:第三章物态变化-讲核心(原卷版)
- DB32T 1590-2010 钢管塑料大棚(单体)通 用技术要求
- 安全行车知识培训
- 第12讲 语态一般现在时、一般过去时、一般将来时(原卷版)
- 食材配送投标服务方案
评论
0/150
提交评论