第十二周--项目2操作用邻接表存储的图
来源:互联网 发布:nodejs 运行sql文件 编辑:程序博客网 时间:2024/06/05 10:52
* * Copyright (c++) 2015 烟台大学计算机学院 * All right reserved. * 文件名称:houzhui.cpp * 作 者: 商文轲 * 完成日期:2015年11月18日 * 版 本 号:v1.9 * 问题描述:假设图G采用邻接表存储,分别设计实现以下要求的算法: (1)输出出图G中每个顶点的出度; (2)求出图G中出度最大的一个顶点,输出该顶点编号; (3)计算图G中出度为0的顶点数; (4)判断图G中是否存在边<span class="MathJax_Preview"></span><span class="MathJax" id="MathJax-Element-1-Frame" role="textbox" aria-readonly="true" style="display: inline-block;"><nobr><span class="math" id="MathJax-Span-1" style="width: 4.08em; display: inline-block;"><span style="width: 1px; height: 0px; overflow: hidden; margin-right: -1px; display: inline-block;"></span><span style="width: 3.28em; height: 0px; font-size: 124%; display: inline-block; position: relative;"><span style="left: 0em; top: -3.97em; position: absolute; clip: rect(3.14em, 1000em, 4.35em, -0.43em);"><span class="mrow" id="MathJax-Span-2"><span class="mo" id="MathJax-Span-3" style="font-family: MathJax_Main-Web;"><</span><span class="mi" id="MathJax-Span-4" style="padding-left: 0.27em; font-family: MathJax_Math-italic-Web;">i</span><span class="mo" id="MathJax-Span-5" style="font-family: MathJax_Main-Web;">,</span><span class="mi" id="MathJax-Span-6" style="padding-left: 0.16em; font-family: MathJax_Math-italic-Web;">j</span><span class="mo" id="MathJax-Span-7" style="padding-left: 0.27em; font-family: MathJax_Main-Web;">></span></span> <span style="width: 0px; height: 3.97em; display: inline-block;"></span></span></span><span style="width: 0px; height: 1.21em; overflow: hidden; vertical-align: -0.32em; border-left-color: currentColor; border-left-width: 0em; border-left-style: solid; display: inline-block;"></span></span></nobr></span> 利用下图作为测试用图,输出结果。 */
#include <stdio.h>#include <malloc.h>#include "graph.h"//返回图G中编号为v的顶点的出度int OutDegree(ALGraph *G,int v){ ArcNode *p; int n=0; p=G->adjlist[v].firstarc; while (p!=NULL) { n++; p=p->nextarc; } return n;}//输出图G中每个顶点的出度void OutDs(ALGraph *G){ int i; for (i=0; i<G->n; i++) printf(" 顶点%d:%d\n",i,OutDegree(G,i));}//输出图G中出度最大的一个顶点void OutMaxDs(ALGraph *G){ int maxv=0,maxds=0,i,x; for (i=0; i<G->n; i++) { x=OutDegree(G,i); if (x>maxds) { maxds=x; maxv=i; } } printf("顶点%d,出度=%d\n",maxv,maxds);}//输出图G中出度为0的顶点数void ZeroDs(ALGraph *G){ int i,x; for (i=0; i<G->n; i++) { x=OutDegree(G,i); if (x==0) printf("%2d",i); } printf("\n");}//返回图G中是否存在边<i,j>bool Arc(ALGraph *G, int i,int j){ ArcNode *p; bool found = false; p=G->adjlist[i].firstarc; while (p!=NULL) { if(p->adjvex==j) { found = true; break; } p=p->nextarc; } return found;}int main(){ ALGraph *G; int A[7][7]= { {0,1,1,1,0,0,0}, {0,0,0,0,1,0,0}, {0,0,0,0,1,1,0}, {0,0,0,0,0,0,1}, {0,0,0,0,0,0,0}, {0,0,0,1,1,0,1}, {0,1,0,0,0,0,0} }; ArrayToList(A[0], 7, G); printf("(1)各顶点出度:\n"); OutDs(G); printf("(2)最大出度的顶点信息:"); OutMaxDs(G); printf("(3)出度为0的顶点:"); ZeroDs(G); printf("(4)边<2,6>存在吗?"); if(Arc(G,2,6)) printf("是\n"); else printf("否\n"); printf("\n"); return 0;}
总结:1 求各顶出度就是求一条链表上有几个节点、
2 判断边是否存在链i上是否有节点j。
0 0
- 第十二周项目-- 操作用邻接表存储的图
- 第十二周 图 项目2--操作用邻接表存储的图
- 第十二周上机实践—项目2—操作用邻接表存储的图
- 第十二周项目2—操作用邻接表存储的图
- 第十二周项目(2):操作用邻接表存储的图
- 第十二周——【项目2 - 操作用邻接表存储的图】
- 第十二周项目2-操作用邻接表存储的图
- 第十二周 项目2 操作用邻接表存储的图
- 第十二周--项目2操作用邻接表存储的图
- 第十二周实践项目2—操作用邻接表存储的图
- 第十二周项目2--操作用邻接表存储的图
- 第十二周 项目2-操作用邻接表存储的图
- 第十二周项目2 - 操作用邻接表存储的图
- 第十二周项目2操作用邻接表存储的图
- 第十二周项目2-操作用邻接表存储的图
- 第十二周 项目2 操作用邻接表存储的图
- 第十二周项目2——操作用邻接表存储的图
- 第十二周 - 项目2 - 操作用邻接表存储的图
- 第12周项目2——操作用邻接表存储的图
- spring+mvc_返回json数据 406
- 项目三-图遍历算法实现
- 什么是SOCKET
- dp与px的转换
- 第十二周--项目2操作用邻接表存储的图
- Spring面试题和答案
- 第11周 项目1 - 二叉树算法验证(3)
- redis 常用命令
- 苹果开源框架ResearchKit登陆GitHub
- 宁愿去陌生人那里,也不照顾熟人的生意,理由竟然是这样的?
- JS中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
- 线性表14 – 数据结构和算法19
- Pycharm 快捷键