/*烟台大学计算机与控制工程学院
时间2015年12月14日
作者:孙潇
问题描述:假设图G采用邻接表存储,分别设计实现以下要求的算法:
(1)输出出图G中每个顶点的出度;
(2)求出图G中出度最大的一个顶点,输出该顶点编号;
(3)计算图G中出度为0的顶点数;
(4)判断图G中是否存在边<i,j> 。
利用下图作为测试用图,输出结果
提示:(1)分别设计函数实现算法;(2)不要全部实现完再测试,而是实现一个,测试一个;(3)请利用图算法库;(4)若将本项目中图G的存储结构改为邻接矩阵,相关操作又如何实现?
输入描述:无
输出描述:若干数据
*/  

#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. 数据结构上机实践第11周项目2 - 操作用邻接表存储的图

    操作用邻接表存储的图 本次实践将对用邻接表存储的图进行按要求操作,运用起所建立的图的算法库.本次实践所用到的算法库点击此处参考.(编译环境:VC++6.0) 本次实践的具体要求如下: 假设图G采用邻接 ...

  2. 第十一周项目实践2 用邻接表存储的图来实现基本应用

    假设图G采用邻接表存储,分别设计实现以下要求的算法:  (1)输出出图G中每个顶点的出度:  (2)求出图G中出度最大的一个顶点,输出该顶点编号:  (3)计算图G中出度为0的顶点数:  (4)判断图 ...

  3. 数据结构实践——操作用邻接表存储的图

    本文是针对[数据结构基础系列(7):图]的实践. [项目 - 操作用邻接表存储的图] 假设图G采用邻接表存储,分别设计实现以下要求的算法: (1)输出出图G中每个顶点的出度: (2)求出图G中出度最大 ...

  4. 第十二周项目二-Time类中的运算符重载

    /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月24日*版 本 号:v1. ...

  5. 第十五周项目二-洗牌(范形程序设计)

    /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月7日 *版 本 ...

  6. 第十五周项目二----用哈希法组织关键字之链地址法

    /*烟台大学计算机与控制工程学院 作者:孙潇 时间:2015年12月11日 问题描述: 已知一个关键字序列为if.while.for.case.do.break.else.struct.union.i ...

  7. 第十五周项目二-----用哈希法组织关键字之线性探测法

    /*烟台大学计算机与控制工程学院 作者:孙潇 时间:2015年12月11日 问题描述: 已知一个关键字序列为if.while.for.case.do.break.else.struct.union.i ...

  8. 第十二周项目4-利用遍历思想求解图问题(6-7)

    /* Copyright (c)2015,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:第十二周项目4-利用遍历思想求解图问题(6-7) 作 者:佟兴锋 完成日期: ...

  9. 第十二周项目一----图基本算法库

    /*烟台大学计算机与控制工程学院 作者:孙潇 时间:2015年11月13日 问题描述:定义图的邻接矩阵和邻接表存储结构,实现其基本运算,并完成测试. 输入描述:无 输出描述:若干数据 */ 头文件: ...

最新文章

  1. pythonshell画图_Python Shell下使用matplotlib
  2. GBDT Xgboost LightGBM区别与联系
  3. python编程入门教学下载-Python编程从入门到实践的PDF教程免费下载
  4. C++语言基础 例程 文本文件的读写
  5. python 语言教程(3)变量之字符串
  6. abap CA CO CS等操作符
  7. svm 交叉验证 python_【python机器学习笔记】SVM实例:有毒蘑菇预测
  8. 实用知识点梳理:香农定理、IP地址划分、基带信号、数据链路层协议、RSTP与IPoverATM
  9. 从JS敏感信息泄露到GETSHELL
  10. Git笔记(25) 选择修订版本
  11. pandas Dataframe表格转Markdown格式
  12. nginx实时生成缩略图到硬盘上
  13. Android ImageButton单击切换按钮图片效果
  14. django中collectstatic的使用
  15. PHP使用Apache中的ab测试网站的压力性能及mpm介绍
  16. ios Segue传值
  17. 登录失败 12306服务器不稳定,12306无法正常登录怎么办?12306登陆不上的解决方法...
  18. 自学方法测试【进行中】
  19. char与varchar的区别?
  20. Python数据类型——元祖

热门文章

  1. YUV_420_888数据裁剪
  2. python中int函数的功能_python中int函数的用法
  3. 读《写给大家看的色彩书1》.设计配色基础1
  4. GnuTLS error -12: A TLS fatal alert has been received.
  5. 面向对象之多态以及进阶
  6. chrome浏览器安装vue插件
  7. 在Android Studio上编写第一个安卓程序
  8. 用java开发一个简单的安卓程序,Android NDK开发简单程序分享(Hello Word!)
  9. Postman 开发团队共享接口协作调试
  10. Python对excel文件批量加密(GUI选择)