提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

一、无向网(∞/权值,对称)

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;
}

【数据结构】采用邻接矩阵表示法创建无向网、无向图、有向图、有向网相关推荐

  1. 数据结构与算法A实验六图论---7-10 邻接矩阵表示法创建无向图

    采用邻接矩阵表示法创建无向图G ,依次输出各顶点的度. 输入格式: 输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶点数和边数. 输入第二行为顶点的信息,每个顶点只能用一 ...

  2. 图:邻接矩阵表示法创建无向图并深度优先搜索遍历

    无向图样式: 邻接矩阵法类似于用数组储存,一个一维数组储存顶点信息,还有一个二维数组储存邻接矩阵 用邻接矩阵进行无向图的创建过程: 一,输入总顶点数和边数(几个点,几条边) eg:如图所示即为8点,9 ...

  3. D-OJ刷题日记:无向图的邻接矩阵表示法验证程序 题目编号:515

    采用邻接矩阵表示无向图,完成图的创建.图的深度优先遍历.图的广度优先遍历操作.其中图的顶点信息是字符型,图中顶点序号按字符顺序排列.本输入样例中所用的图如下所示: 输入描述 第一行输入两个值,第一个是 ...

  4. 一个含n个顶点和e条弧的有向图以邻接矩阵表示法为存储结构,则计算该有向图中某个顶点出度的时间复杂度为

    一个含n个顶点和e条弧的有向图以邻接矩阵表示法为存储结构,则计算该有向图中某个顶点出度的时间复杂度为(       ) A.O(n)                                   ...

  5. 邻接表法创建无向图(C语言)

    题目 本题要求建立一个无向图,采用邻接表做为存储结构. 例如: 输入信息为:第一行给出图的顶点数n和边数e.第二行给出n个字符,表示n个顶点的数据元素的值.后面是e行,给出每一条边的两个顶点编号. 输 ...

  6. 图——邻接表法创建无向图算法。走起。。。。

    一.算法步骤: 1.先输入无向图的的总顶点数和边数. 2.输入每个顶点的信息,并把所有顶点结点中的firstarc置为NULL. 3.输入与每条边相关联的两个顶点. 4.找到两个顶点的位置即在顶点结点 ...

  7. 图的介绍和邻接矩阵、邻接表的创建(以有向图为例)

    小编满血复活,更新力度感人~ 先让我们看看有向图长什么样吧 有向图是指节点与节点之间连线是有方向性的. 一.图的介绍 图分为有向图和无向图. 图由许多的节点组成,这些节点我们称为顶点. 有向图是指顶点 ...

  8. 图的邻接矩阵表示法及顶点入度、出度的计算方法

    设图(graph)的结构为: 下面,我们来建立这个图, 并求出各个顶点的入度和出度,程序如下: #include <iostream> #define MAX_VERTEX 20 // 最 ...

  9. 数据结构——图的五种种类【无向图-有向图-简单图-完全无向图-有向完全图】

    目录: 一:无向图 1.定义 2.图形化解释 3.结合​表达式介绍 二:有向图 1.定义 2.图形化解释 3.结合​表达式介绍 有向图和无向图区别: 三:简单图 1.定义 2.图形化解释 四:完全无向 ...

最新文章

  1. python数据挖掘例题_数据挖掘与python实践试题及答案
  2. 软测homework2
  3. 从阿里云数据库入选Gartner谈数据库的演化
  4. 【面向对象】面向对象程序设计测试题8-对象之间one-to-many关系测试题
  5. 总结MyBatis+Spring的整合
  6. Atitit 分布式之道 attilax著 第4章 通信 第7章 一致性和复制 第8章 容错性 第9章 安全性 第10章 基于对象的分布式系统 第11章 分布式文件系统 第12章 基于Web的分
  7. java 视频提取音频 | Java工具类
  8. GINI Index-基尼指数
  9. 异常:java.lang.IllegalArgumentException: Result Maps collection already contains
  10. 手机端兼容iPhoneX刘海屏
  11. 微信怎样开通账户升级服务器,微信支付商户账户升级常见问题
  12. 如何理解java代理模式?
  13. Ubuntu 更新错误修复大全
  14. pytorch PixelShuffle和Upscale函数
  15. linux根目录IOT文件,针对新型IoT僵尸网络Linux.Omni的分析
  16. 关于错误Failure [INSTALL_FAILED_ALREADY_EXISTS]的解决办法
  17. Redis数据类型-String(字符串类型)
  18. c语言程序输入中能不能输入中文,如何在C语言中输入中文?
  19. Java 遍历map(Java8)
  20. 动态分析和静态分析最主要的区别是什么?

热门文章

  1. 网站title,meta,description如何设置,长度大小多少合适!
  2. DM8数据库安装与实时主备搭建
  3. LeetCode 5197
  4. 薄冰实用英语语法详解A
  5. PS/聚苯乙烯微球的制备方法
  6. mana wifi_在IBM Security Policy Manager 7.1中使用Access Manager凭证
  7. 什么是代理IP池,如何构建?
  8. 四阶龙格库塔法求解一次常微分方程组(python实现)
  9. DSRN——Image Super-Resolution via Dual-State Recurrent Network
  10. 欢迎来到北工大换书网