第十二周项目二----操作用邻接表存储的图
/*烟台大学计算机与控制工程学院
时间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;
}
运行结果:
第十二周项目二----操作用邻接表存储的图相关推荐
- 数据结构上机实践第11周项目2 - 操作用邻接表存储的图
操作用邻接表存储的图 本次实践将对用邻接表存储的图进行按要求操作,运用起所建立的图的算法库.本次实践所用到的算法库点击此处参考.(编译环境:VC++6.0) 本次实践的具体要求如下: 假设图G采用邻接 ...
- 第十一周项目实践2 用邻接表存储的图来实现基本应用
假设图G采用邻接表存储,分别设计实现以下要求的算法: (1)输出出图G中每个顶点的出度: (2)求出图G中出度最大的一个顶点,输出该顶点编号: (3)计算图G中出度为0的顶点数: (4)判断图 ...
- 数据结构实践——操作用邻接表存储的图
本文是针对[数据结构基础系列(7):图]的实践. [项目 - 操作用邻接表存储的图] 假设图G采用邻接表存储,分别设计实现以下要求的算法: (1)输出出图G中每个顶点的出度: (2)求出图G中出度最大 ...
- 第十二周项目二-Time类中的运算符重载
/**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月24日*版 本 号:v1. ...
- 第十五周项目二-洗牌(范形程序设计)
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年6月7日 *版 本 ...
- 第十五周项目二----用哈希法组织关键字之链地址法
/*烟台大学计算机与控制工程学院 作者:孙潇 时间:2015年12月11日 问题描述: 已知一个关键字序列为if.while.for.case.do.break.else.struct.union.i ...
- 第十五周项目二-----用哈希法组织关键字之线性探测法
/*烟台大学计算机与控制工程学院 作者:孙潇 时间:2015年12月11日 问题描述: 已知一个关键字序列为if.while.for.case.do.break.else.struct.union.i ...
- 第十二周项目4-利用遍历思想求解图问题(6-7)
/* Copyright (c)2015,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:第十二周项目4-利用遍历思想求解图问题(6-7) 作 者:佟兴锋 完成日期: ...
- 第十二周项目一----图基本算法库
/*烟台大学计算机与控制工程学院 作者:孙潇 时间:2015年11月13日 问题描述:定义图的邻接矩阵和邻接表存储结构,实现其基本运算,并完成测试. 输入描述:无 输出描述:若干数据 */ 头文件: ...
最新文章
- pythonshell画图_Python Shell下使用matplotlib
- GBDT Xgboost LightGBM区别与联系
- python编程入门教学下载-Python编程从入门到实践的PDF教程免费下载
- C++语言基础 例程 文本文件的读写
- python 语言教程(3)变量之字符串
- abap CA CO CS等操作符
- svm 交叉验证 python_【python机器学习笔记】SVM实例:有毒蘑菇预测
- 实用知识点梳理:香农定理、IP地址划分、基带信号、数据链路层协议、RSTP与IPoverATM
- 从JS敏感信息泄露到GETSHELL
- Git笔记(25) 选择修订版本
- pandas Dataframe表格转Markdown格式
- nginx实时生成缩略图到硬盘上
- Android ImageButton单击切换按钮图片效果
- django中collectstatic的使用
- PHP使用Apache中的ab测试网站的压力性能及mpm介绍
- ios Segue传值
- 登录失败 12306服务器不稳定,12306无法正常登录怎么办?12306登陆不上的解决方法...
- 自学方法测试【进行中】
- char与varchar的区别?
- Python数据类型——元祖
热门文章
- YUV_420_888数据裁剪
- python中int函数的功能_python中int函数的用法
- 读《写给大家看的色彩书1》.设计配色基础1
- GnuTLS error -12: A TLS fatal alert has been received.
- 面向对象之多态以及进阶
- chrome浏览器安装vue插件
- 在Android Studio上编写第一个安卓程序
- 用java开发一个简单的安卓程序,Android NDK开发简单程序分享(Hello Word!)
- Postman 开发团队共享接口协作调试
- Python对excel文件批量加密(GUI选择)