c语言数据结构用矩阵存储图,数据结构之---C语言实现图的数组(邻接矩阵)存储表示...
//图的数组(邻接矩阵)存储表示
#include
#include
#define MAX_VEX_NUM 50
typedef char VertexType;
typedef enum {
DG, UDG
} GraphType;
typedef struct {
VertexType vexs[MAX_VEX_NUM];
int arcs[MAX_VEX_NUM][MAX_VEX_NUM];
int vexnum, arcnum;
GraphType type;
} MGraph;
//定位
int getIndexOfVexs(char vex, MGraph *MG)
{
int i;
for (i = 1; i <= MG->vexnum; i++)
{
if (MG->vexs[i] == vex)
{
return i;
}
}
return 0;
}
//创建图
void create_MG(MGraph *MG)
{
int i, j, k;
int v1, v2, type;
char c1, c2;
printf("Please input graph type DG(0) or UDG(1) :");
scanf("%d", &type);
if (type == 0)
MG->type = DG;
else if (type == 1)
MG->type = UDG;
else
{
printf("Please input correct graph type DG(0) or UDG(1)!");
return;
}
printf("Please input vexmun : ");
scanf("%d", &MG->vexnum);
printf("Please input arcnum : ");
scanf("%d", &MG->arcnum);
getchar();
for (i = 1; i <= MG->vexnum; i++)
{
printf("Please input %dth vex(char):", i);
scanf("%c", &MG->vexs[i]);
getchar();
}
//初始化邻接矩阵
for (i = 1; i <= MG->vexnum; i++)
{
for (j = 1; j <= MG->vexnum; j++)
{
MG->arcs[i][j] = 0;
}
}
//输入边的信息,建立邻接矩阵
for (k = 1; k <= MG->arcnum; k++) {
printf("Please input %dth arc v1(char) v2(char) : ", k);
scanf("%c %c", &c1, &c2);
v1 = getIndexOfVexs(c1, MG);
v2 = getIndexOfVexs(c2, MG);
if (MG->type == 1)
MG->arcs[v1][v2] = MG->arcs[v2][v1] = 1;
else
MG->arcs[v1][v2] = 1;
getchar();
}
}
/**
* 打印邻接矩阵和顶点信息
*/
void print_MG(MGraph MG)
{
int i, j;
if(MG.type == DG)
{
printf("Graph type : Direct graph:\n");
}
else
{
printf("Graph type: Undirect graph:\n");
}
printf("Graph vertex number: %d \n",MG.vexnum);
printf("Graph arc number: %d \n",MG.arcnum);
printf("Vertex set:");
for (i = 1; i <= MG.vexnum; i++)
printf("%c ", MG.vexs[i]);
printf("\n");
printf("Adjacency Matrix:\n");
for (i = 1; i <= MG.vexnum; i++)
{
j = 1;
for (; j < MG.vexnum; j++)
{
printf("%d ", MG.arcs[i][j]);
}
printf("%d ", MG.arcs[i][j]);
printf("\n");
}
}
int main()
{
MGraph MG;
create_MG(&MG);
print_MG(MG);
return 0;
}
如图:
c语言数据结构用矩阵存储图,数据结构之---C语言实现图的数组(邻接矩阵)存储表示...相关推荐
- 图的数组(邻接矩阵)存储结构
图是比较复杂的数据结构,它由顶点和顶点之间的弧或边组成.任何两个顶点之间都 可能存在弧或边.在计算机存储图时,只要能表示出顶点的个数及每个顶点的特征.每对 顶点之间是否存在弧(边)及弧(边)的特征,就 ...
- 图的邻接矩阵存储及遍历操作
第1关:图的邻接矩阵存储及求邻接点操作 任务描述 本关任务:要求从文件输入顶点和边数据,包括顶点信息.边.权值等,编写程序实现以下功能. 1)构造无向网G的邻接矩阵和顶点集,即图的存储结构为邻接矩阵. ...
- c++ 数据结构 图的应用(实现图的深度优先和广度优先遍历)——以邻接表为存储结构
数据结构实习--图及应用(图的遍历) 一.问题描述 很多涉及图上操作的算法都是以图的遍历操作为基础的.试写一个程序,演示无向图的遍历操作. 二.基本要求 以邻接表为存储结构,实现连通无向图的深度优先和 ...
- 数据结构-图-邻接矩阵-试在邻接矩阵存储结构上实现图的基本操作 matrix_insert_vertex 和matrix_insert_arc-icoding
邻接矩阵 试在邻接矩阵存储结构上实现图的基本操作 matrix_insert_vertex 和matrix_insert_arc,相关定义如下: typedef int VertexType;type ...
- 数据结构--三角矩阵的压缩存储
三角矩阵 三角矩阵的常用压缩方式有两种: 线性压缩 使用三角形的二维数组压缩 线性压缩存储三角矩阵 下三角矩阵: 上三角矩阵: 以下三角矩阵的线性压缩存储为例,进行实现: package pers.z ...
- 图的存储结构与操作--C语言实现
图(graph)是一种比树结构还要复杂的数据结构,它的术语,存储方式,遍历方式,用途都比较广,所以如果想要一次性完成所有的代码,那代码会非常长.所以,我将分两次来完成图的代码.这一次,我会完成图的五种 ...
- c语言枚举变量自增报错,C_数据结构与算法(1):C语言基础
C_数据结构与算法(一):C语言基础 致初学者的我:一切都是由浅入深. 每种语言都有每种语言的特性,基本的特性是相同的,下面依照惯例写hello world,相关编译后面再介绍. // C语言用&qu ...
- 数据结构题及c语言版答案周桂红版,数据结构习题与答案.pdf
第 1 章 绪 论 课后习题讲解 1. 填空 ⑴( )是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理. [解答]数据元素 ⑵( )是数据的最小单位,( )是讨论数据结构时涉及的最小数据 ...
- 【数据结构_浙江大学MOOC】第六七八讲 图
列出连通集 题目 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点. 输 ...
最新文章
- 原子智库 | 刘伟:人工智能快追上人类思维?答案可能让你失望
- python监控错误语句,基于Python的关键字监控及告警
- 自主云服务器处理器_云服务器哪家的CPU最便宜且好用
- Spark SQL之RDD转DataFrame
- layui导入模板数据_layui表格-template模板的三种用法
- AI看脸、测肤,左可美妆新零售,右能智慧医美
- Android 图形架构
- JUC原子类-数组类型(三)
- 大数据时代,怎么做全渠道的营销
- 华为成了!鸿蒙OS 2.0对比iOS 14:苹果流畅度竟完败?
- 用YAML构建数据测试DAO层
- 20. Valid Parentheses[E]有效的括号
- cocos 创建一个js项目_如何使用Cocos2d-JS引擎快速开发一个微信游戏?
- JavaScript 大小转化B KB MB GB等的转化
- 无盘服务器什么意思,无盘网络是什么
- 尤雨溪对 2022 Web前端生态趋势是这样看的
- Ubuntu20.04安装gamit10.7
- 英语一2011 阅读四
- Android 去除各种厂家广告合集
- 苹果支付验单java
热门文章
- Oracle 10G2 for CentOS 5.2 安装截图详解
- 问题十一:用条件编译(#if…#endif)避免 main函数中测试代码在测试完成后就删除
- 将一个字符串进行反转。将字符串中指定部分进行反转
- 大数据技术在各行业中的挑战有哪些
- java web调用exe文件_从网页WEB上调用本地应用程序(java)
- enum ordinal java_Java中怎样由枚举常量的ordinal值获得枚举常量对象
- cmake mysql 参数_MySQL cmake编译时这些参数是什么意思?-问答-阿里云开发者社区-阿里云...
- bit是python最快的bitcoin库_新的Bitcoinpython节点比以前的Python库快100倍
- ea 如何画bce备选架构图_GitHub - wongdean/rime-settings at 941ea079832ff211723bce1ce8e47344e527575e...
- Python爬虫之(九)数据提取-XPath