下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校学生体质健康测试工作实施方案
- 公司法务部管理制度
- 课程设计研究总结
- 台球出租合同(2篇)
- 合格的离婚协议书(2篇)
- 学校教科研管理制度
- 高二下学期物理教学工作总结
- 课程设计医院系统
- 湖北理工学院《水污染控制工程》2021-2022学年期末试卷
- 湖北理工学院《电气控制与PLC》2023-2024学年期末试卷
- 中医减肥辩证施治是关键含内容
- 临床医学概要试题库(含参考答案)
- 人教版小学五年级上册数学期中考试试卷及参考答案(培优)
- 幼儿园中班语言《有趣的象形字》课件
- 诺贝尔生理学或医学奖史话智慧树知到期末考试答案章节答案2024年华中师范大学
- 莎士比亚戏剧赏析智慧树知到期末考试答案章节答案2024年北京师范大学
- 视觉传达设计方法智慧树知到期末考试答案章节答案2024年江汉大学
- 某市政府采购评审专家培训课件
- 严重精神障碍患者年度健康体检告知书
- 13精卫填海 (教学设计) 统编版语文四年级上册
- 如何做好开门红客户积累课件
评论
0/150
提交评论