【数据结构】采用邻接矩阵表示法创建无向网、无向图、有向图、有向网
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
一、无向网(∞/权值,对称)
1、思路
2、代码
3、运行结果
三、其他
(1)无向图(0/1,对称)
(2)有向网(∞/权值,不对称)
(3)有向图(0/1,不对称)
一、无向网
1、思路:
(1)输入总顶点数和总边数
(2)依次输入顶点的信息放入顶点表中
(3)初始化邻接矩阵,极大值∞
(4)构造邻接矩阵
2、代码
#include<iostream>
using namespace std;
#define MaxInt 32767 //表示极大值
#define MVNum 100 //最大顶点数
typedef char VerTexType; //设置顶点类型为字符型
typedef int ArcType; //设置权重为整型 typedef struct{VerTexType vexs[MVNum]; //顶点表 ArcType arcs[MVNum][MVNum]; //邻接矩阵 int vexnum,arcnum; //顶点数和边数
}AMGraph;从顶点表中查找顶点
int LocateVex(AMGraph G,VerTexType u){ int i;for(i=0;i<G.vexnum;i++)if(u==G.vexs[i]) return i; return -1;
} //构造无向网
int CreateUDN(AMGraph &G){int i,j,k;cout<<"请输入顶点数和边数:";cin>>G.vexnum>>G.arcnum; //输入顶点数和边数 cout<<"输入顶点:";for(i=0;i<G.vexnum;i++) cin>>G.vexs[i]; //顶点表 for(i=0;i<G.vexnum;i++)for(j=0;j<G.vexnum;j++)G.arcs[i][j]=MaxInt; //初始化邻接矩阵 for(k=0;k<G.arcnum;k++){ //构造邻接矩阵 VerTexType v1,v2;ArcType w;cout<<"请输入依附的顶点和权值:";cin>>v1>>v2>>w;i=LocateVex(G,v1); j=LocateVex(G,v2);G.arcs[i][j]=w; //边(v1,v2)权重置为w G.arcs[j][i]=G.arcs[i][j]; //无向网,对称 }return 1;
} void Show(AMGraph G){ int i,j;for(i=0;i<G.vexnum;i++){for(j=0;j<G.vexnum;j++)if(G.arcs[i][j]==MaxInt) cout<<"∞"<<' ';else cout<<G.arcs[i][j]<<' ';cout<<endl; }}int main(){AMGraph G;CreateUDN(G);cout<<endl<<"构造的无向网为:";Show(G);return 1;
}
3、运行结果
三、其他
(1)无向图
初始化邻接矩阵时,w均为0
构造邻接矩阵时,w为1
//构造无向图
int CreateUDG(AMGraph &G){int i,j,k;cout<<"请输入顶点数和边数:";cin>>G.vexnum>>G.arcnum;cout<<"输入顶点:";for(i=0;i<G.vexnum;i++) cin>>G.vexs[i];for(i=0;i<G.vexnum;i++)for(j=0;j<G.vexnum;j++)G.arcs[i][j]=0; //初始化邻接矩阵,权为0for(k=0;k<G.arcnum;k++){VerTexType v1,v2;ArcType w;cout<<"输入依附的顶点:";cin>>v1>>v2;i=LocateVex(G,v1);j=LocateVex(G,v2);G.arcs[i][j]=1; //构造邻接矩阵,权为1G.arcs[j][i]=G.arcs[i][j];}return 1;
}
(2)有向网
非对称,无需G.arcs[j][i]=G.arcs[i][j]
//构造有向网
int CreateDN(AMGraph &G){int i,j,k;cout<<"请输入顶点数和边数:";cin>>G.vexnum>>G.arcnum; cout<<"输入顶点:";for(i=0;i<G.vexnum;i++) cin>>G.vexs[i]; for(i=0;i<G.vexnum;i++)for(j=0;j<G.vexnum;j++)G.arcs[i][j]=MaxInt; for(k=0;k<G.arcnum;k++){ VerTexType v1,v2;ArcType w;cout<<"请输入依附的顶点和权值:";cin>>v1>>v2>>w;i=LocateVex(G,v1); j=LocateVex(G,v2);G.arcs[i][j]=w; //G.arcs[j][i]=G.arcs[i][j]; //去掉该条语句 }return 1;
}
(3)有向图
初始化w为0
构造时w为1
无需G.arcs[j][i]=G.arcs[i][j]
//构造有向图
int CreateDG(AMGraph &G){int i,j,k;cout<<"输入顶点数和边数:";cin>>G.vexnum>>G.arcnum;cout<<"输入顶点:";for(i=0;i<G.vexnum;i++) cin>>G.vexs[i];for(i=0;i<G.vexnum;i++)for(j=0;j<G.vexnum;j++)G.arcs[i][j]=0; //初始化为0 for(k=0;k<G.arcnum;k++){VerTexType v1,v2;cout<<"输入依附的顶点:";cin>>v1>>v2;i=LocateVex(G,v1);j=LocateVex(G,v2);G.arcs[i][j]=1; //构造时权重为1 } return 1;
}
【数据结构】采用邻接矩阵表示法创建无向网、无向图、有向图、有向网相关推荐
- 数据结构与算法A实验六图论---7-10 邻接矩阵表示法创建无向图
采用邻接矩阵表示法创建无向图G ,依次输出各顶点的度. 输入格式: 输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶点数和边数. 输入第二行为顶点的信息,每个顶点只能用一 ...
- 图:邻接矩阵表示法创建无向图并深度优先搜索遍历
无向图样式: 邻接矩阵法类似于用数组储存,一个一维数组储存顶点信息,还有一个二维数组储存邻接矩阵 用邻接矩阵进行无向图的创建过程: 一,输入总顶点数和边数(几个点,几条边) eg:如图所示即为8点,9 ...
- D-OJ刷题日记:无向图的邻接矩阵表示法验证程序 题目编号:515
采用邻接矩阵表示无向图,完成图的创建.图的深度优先遍历.图的广度优先遍历操作.其中图的顶点信息是字符型,图中顶点序号按字符顺序排列.本输入样例中所用的图如下所示: 输入描述 第一行输入两个值,第一个是 ...
- 一个含n个顶点和e条弧的有向图以邻接矩阵表示法为存储结构,则计算该有向图中某个顶点出度的时间复杂度为
一个含n个顶点和e条弧的有向图以邻接矩阵表示法为存储结构,则计算该有向图中某个顶点出度的时间复杂度为( ) A.O(n) ...
- 邻接表法创建无向图(C语言)
题目 本题要求建立一个无向图,采用邻接表做为存储结构. 例如: 输入信息为:第一行给出图的顶点数n和边数e.第二行给出n个字符,表示n个顶点的数据元素的值.后面是e行,给出每一条边的两个顶点编号. 输 ...
- 图——邻接表法创建无向图算法。走起。。。。
一.算法步骤: 1.先输入无向图的的总顶点数和边数. 2.输入每个顶点的信息,并把所有顶点结点中的firstarc置为NULL. 3.输入与每条边相关联的两个顶点. 4.找到两个顶点的位置即在顶点结点 ...
- 图的介绍和邻接矩阵、邻接表的创建(以有向图为例)
小编满血复活,更新力度感人~ 先让我们看看有向图长什么样吧 有向图是指节点与节点之间连线是有方向性的. 一.图的介绍 图分为有向图和无向图. 图由许多的节点组成,这些节点我们称为顶点. 有向图是指顶点 ...
- 图的邻接矩阵表示法及顶点入度、出度的计算方法
设图(graph)的结构为: 下面,我们来建立这个图, 并求出各个顶点的入度和出度,程序如下: #include <iostream> #define MAX_VERTEX 20 // 最 ...
- 数据结构——图的五种种类【无向图-有向图-简单图-完全无向图-有向完全图】
目录: 一:无向图 1.定义 2.图形化解释 3.结合表达式介绍 二:有向图 1.定义 2.图形化解释 3.结合表达式介绍 有向图和无向图区别: 三:简单图 1.定义 2.图形化解释 四:完全无向 ...
最新文章
- python数据挖掘例题_数据挖掘与python实践试题及答案
- 软测homework2
- 从阿里云数据库入选Gartner谈数据库的演化
- 【面向对象】面向对象程序设计测试题8-对象之间one-to-many关系测试题
- 总结MyBatis+Spring的整合
- Atitit 分布式之道 attilax著 第4章 通信 第7章 一致性和复制 第8章 容错性 第9章 安全性 第10章 基于对象的分布式系统 第11章 分布式文件系统 第12章 基于Web的分
- java 视频提取音频 | Java工具类
- GINI Index-基尼指数
- 异常:java.lang.IllegalArgumentException: Result Maps collection already contains
- 手机端兼容iPhoneX刘海屏
- 微信怎样开通账户升级服务器,微信支付商户账户升级常见问题
- 如何理解java代理模式?
- Ubuntu 更新错误修复大全
- pytorch PixelShuffle和Upscale函数
- linux根目录IOT文件,针对新型IoT僵尸网络Linux.Omni的分析
- 关于错误Failure [INSTALL_FAILED_ALREADY_EXISTS]的解决办法
- Redis数据类型-String(字符串类型)
- c语言程序输入中能不能输入中文,如何在C语言中输入中文?
- Java 遍历map(Java8)
- 动态分析和静态分析最主要的区别是什么?
热门文章
- 网站title,meta,description如何设置,长度大小多少合适!
- DM8数据库安装与实时主备搭建
- LeetCode 5197
- 薄冰实用英语语法详解A
- PS/聚苯乙烯微球的制备方法
- mana wifi_在IBM Security Policy Manager 7.1中使用Access Manager凭证
- 什么是代理IP池,如何构建?
- 四阶龙格库塔法求解一次常微分方程组(python实现)
- DSRN——Image Super-Resolution via Dual-State Recurrent Network
- 欢迎来到北工大换书网