java有向图邻接表入度_图的实现--邻接表(求出各顶点的出度和入度)
#include
using namespace std;
#include
#define MAX 100
struct ArcNode{//边结点
int adjvex;//有向边的另一个邻接点的序号
ArcNode *nextarc;//指向下一个边结点的指针
};
struct VNode{
int data;
ArcNode *head1;
ArcNode *head2;
};
struct LGraph{
VNode vertexs[MAX];
int vernum,arcnum;
};
LGraph lg;
void CreateLG(LGraph *lg)
{
int i=0;
ArcNode *pi;
int v1,v2;
//lg->vernum=lg->arcnum=0;
//scanf("%d%d",&lg->vernum,&lg->arcnum);
for(i=0;ivernum;i++)
lg->vertexs[i].head1=lg->vertexs[i].head2=NULL;
for(i=0;iarcnum;i++)
{
scanf("%d%d",&v1,&v2);
v1--;v2--;
pi=new ArcNode;
pi->adjvex=v2;
pi->nextarc=lg->vertexs[v1].head1;
lg->vertexs[v1].head1=pi;
pi=new ArcNode;
pi->adjvex=v1;
pi->nextarc=lg->vertexs[v2].head2;
lg->vertexs[v2].head2=pi;
}
}
void DeleteLG(LGraph *lg)
{
int i;
ArcNode *pi;
for(i=0;ivernum;i++)
{
pi=lg->vertexs[i].head1;
while(pi!=NULL)
{
lg->vertexs[i].head1=pi->nextarc;
delete pi;
pi=lg->vertexs[i].head1;
}
pi=lg->vertexs[i].head2;
while(pi!=NULL)
{
lg->vertexs[i].head2=pi->nextarc;
delete pi;
pi=lg->vertexs[i].head2;
}
}
}
int main()
{
//CreateLG(&lg);
int i;
int id,od;
ArcNode *pi;
while(1)
{
lg.vernum=lg.arcnum=0;
scanf("%d%d",&lg.vernum,&lg.arcnum);
if(lg.vernum==0) break;
CreateLG(&lg);
for(i=0;i
{
od=0;
pi=lg.vertexs[i].head1;
while(pi!=NULL)
{
od++;
pi=pi->nextarc;
}
if(i==0)
printf("%d",od);//输出出度
else
printf(" %d",od);
}
printf("\n");
for(i=0;i
{
id=0;
pi=lg.vertexs[i].head2;
while(pi!=NULL)
{
pi=pi->nextarc;
id++;
}
if(i==0)
printf("%d",id);//输出入度
else
printf(" %d",id);
}
printf("\n");
DeleteLG(&lg);
}
return 0;
}//测试数据如下:
//4 7 分别代表定点数和边数
//1 4//弧尾和弧头
//2 1
//2 2
//2 3
//2 3
//4 2
//4 3
原文:http://blog.csdn.net/yuzibode/article/details/18359343
java有向图邻接表入度_图的实现--邻接表(求出各顶点的出度和入度)相关推荐
- 【算法】广度遍历算法的应用 求出距离顶点v0的最短路径长度为最长的一个顶点,图结构的bfs生成树及其双亲表示形式
例: 求出距离顶点v0的最短路径长度为最长的一个顶点,并要求尽可能节省时间 分析: 用bfs算法(利用bfs算法的层次特性): 从v0出发进行广度遍历时, 最后一层的顶点距离v0的最短路径长度最长.因 ...
- 有向图的广度优先遍历_图的两种遍历方式
1 引言 遍历是指从某个节点出发,按照一定的的搜索路线,依次访问对数据结构中的全部节点,且每个节点仅访问一次. 在二叉树基础中,介绍了对于树的遍历.树的遍历是指从根节点出发,按照一定的访问规则,依次访 ...
- mysql 复制表耗时_聊一下mysql的表复制
1 insert...from的问题 insert - select 是很常见的在两个表之间拷贝数据的方法.需要注意,在可重复读隔离级别下,这个语句会给 select的表里扫描到的记录和间隙加读锁. ...
- mysql水果表查询_最全MySQL数据库表的查询操作
序言 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对于INNER JOIN(内连接).LEFT JOIN(左连接).RIGHT JOIN(右连接)等一些复杂查询. 通过本节的学习,可 ...
- oracle分库分表原理_题库分库分表架构方案
方案 项目背景 在现在题库架构下,针对新购买的1300W多道数据进行整合,不影响现有功能.由于数据量偏多,需要进行数据的切分 目标场景 兼容旧的功能 对1300多W数据进行分库分表 需要对旧的数据进行 ...
- MySQL中有inserted表吗_使用 inserted 和 deleted 表
创建和维护数据库 使用 inserted 和 deleted 表 触发器语句中使用了两种特殊的表:deleted 表和 inserted 表.Microsoft® SQL Server™ 2000 自 ...
- mysql 评价表设计_来聊聊mysql单表评论系统怎么设计
评论系统对于一个网站来说几乎是必不可少的,当然评论系统的设计也多种多样.一般情况下,评论数据表会和一个用户信息表结合使用,就是在评论表中记录的有用户id(例如user_id),然后查询评论数据的时候根 ...
- mysql清空数据库中所有表数据_清空mysql数据库所有表数据
1,查看数据库状态 及启动停止 /etc/init.d/mysqld status/etc/init.d/mysqld start/etc/init.d/mysqld stop 2,给用户配置初始密码 ...
- java实现809*两位数=800*两位数+9*两位数,求出两位数的值。其中8*两位数的结果为两位数,9*两位数的结果为三位数
java实现809*??=800*??+9*??,求出??的值.其中??代表的是两位数,8*??的结果为两位数,9*??的结果为三位数 1 分析 1.1 此题需要控制台进行输入吗? 解答:不需要 1. ...
最新文章
- 阿里同款目标管理和绩效管理系统,让每个岗位都为业务赋能
- 2016年金融全行业网络安全状况调研报告
- Linux shell 基础语法
- asp获取手机mac_asp.net 获取客户端IP与mac
- fastadmin html模板,fastadmin 使用记录
- Python中json模块的使用,以及json.loads()和json.dumps()的区别
- 冷热rx-java可观察
- 服务器维修天长,台达精密空调服务天长市供电局
- 大数据之-Hadoop3.x_MapReduce_切片源码分析---大数据之hadoop3.x工作笔记0104
- Docker详解(八)——Docker镜像制作
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_6_练习_转换文件编码...
- my ReadBook_dianzishangwuwangzhanshejiyuanli / 29991 / 00906 / dianzishangwu
- comment hive_Hive中基本语法
- 计算机断网后怎么连接网络连接,win7系统中网络经常掉线断网后又自动连接上怎么办...
- 科学前沿 AI共拓!AI for Science论坛重磅来袭
- 『 文件操作 』文件批量改名
- 关于瞬时功率的无功功率和有功功率,在不同坐标系下的验证
- 网站运营中同时把握好网站推广和用户体验度
- 我的世界1.8.9作弊java_我的世界超强作弊代码大全 掌控整个世界
- 多校胡策 round5 by:yts1999