第11周项目2—操作用邻接表存储的图
来源:互联网 发布:java桌面应用开发框架 编辑:程序博客网 时间:2024/06/09 17:38
- /*
- *Copyright(c)2017,烟台大学计算机学院
- *All right reserved.
- *文件名:sk.cpp btree.h btree.cpp
- *作者:盛凯
- *完成日期:2017年12月14日
- *版本号:v1.0
- *
- *问题描述:操作用邻接表存储的图
- *输入描述:无
- *程序输出:见运行结果
- sk.cpp:
- #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;
} - 程序运行结果如图所示:
反思总结:运用了邻接表来存储图,进一步练习了图的基本算法。
阅读全文
0 0
- 第11周 项目2 数据结构实践——操作用邻接表存储的图
- 第11周项目2—操作用邻接表存储的图
- 【图项目2 - 操作用邻接表存储的图——第12周】
- 第11周项目2- 操作用邻接表存储的图
- 第11周项目2-操作用邻接表存储的图
- 第11周项目2- 操作用邻接表存储的图
- 第11周项目2- 操作用邻接表存储的图
- 第12周项目2——操作用邻接表存储的图
- 第12周项目2——操作用邻接表存储的图
- 第12周、项目2—操作用邻接表存储的图
- 第12周项目2 操作用邻接表存储
- 第12周上机实践项目2 - 操作用邻接表存储的图
- 第12周 项目2-操作用邻接表存储的图
- 第12周实践项目2-操作用邻接表存储的图
- 第12周项目2操作用邻接表存储的图
- 第12周-项目2 操作用邻接表存储的图
- 第12周项目2-操作用邻接表存储的图
- 第12周项目2-操作用邻接表存储的图
- java 解压zip文件
- 项目笔记2
- 数据结构学习心得体会
- Spring注解配置定时任务<task:annotation-driven/>
- Android Paint 画笔的一些偏知识
- 第11周项目2—操作用邻接表存储的图
- 微信支付接口境内商户版、境内服务商版区别
- Windows进程间共享socket与窗口句柄的体会
- 改变图片透明度
- java——保证原子性操作的CAS算法
- 第五周线性表 项目(三)括号的匹配
- spring-boot处理跨域
- Java 字符串拼接效率分析及最佳实践
- android studio 编译时注解(三) 打造注入框架