C语言邻接矩阵的实现
关于邻接表的操作,只讲下创建邻接表。
首先依然是预定义和类型定义:
#define OK 1
#define ERROR 0
#define MaxInt 32767
#define MVNum 100typedef int Status;
typedef char VerTexType;
typedef int ArcType;typedef struct{VerTexType vexs[MVNum];ArcType arcs[MVNum][MVNum];int vexnum, arcnum;
}AMGraph;
查找元素位置:
int LocateVex(AMGraph *G, VerTexType v)
{int i;for (i = 0; i < (G->vexnum); i++){if (v == G->vexs[i])return i;}
}
在邻接矩阵中查找元素v的位置,如果查找到某个元素等于v,这返回这个元素的位置。
创建邻接矩阵:
Status CreateUDN(AMGraph *G)
{int i, j, k;ArcType w;VerTexType v1, v2;printf("输入总顶点数、总边数:");scanf("%d %d", &G->vexnum, &G->arcnum);fflush(stdin);printf("输入元素:");for (i = 0; i < G->vexnum; i++)scanf("%c", &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++){printf("输入两个顶点值、边的权值:");fflush(stdin);scanf("%c %c %d", &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 OK;
}
先输入总定点数、总边数。然后依次输入各个顶点的值,将各边的权值均置为极大值MaxInt。然后,输入要设定权值的边的两个顶点的值,并输入该边的权值w。然后确定这两个顶点的坐标i、j并确定ij向量,将输入的w值赋值给这条边的权值。由于该邻接矩阵为无向邻接矩阵,所以将反向向量ji的权值等于向量ij的权值。
加入main()测试:
int main(void)
{VerTexType v1, v2;int i, j;AMGraph G;CreateUDN(&G);while (1){printf("输入要两顶点的值:");fflush(stdin);scanf("%c %c", &v1, &v2);i = LocateVex(&G, v1);j = LocateVex(&G, v2);printf("该边的权值为:%d\n", G.arcs[i][j]);}return 0;
}
C语言邻接矩阵的实现相关推荐
- 邻接矩阵用c语言,邻接矩阵无向图(一)之 C语言详解
本章介绍邻接矩阵无向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实 ...
- 邻接矩阵的c语言算法思路,C语言邻接矩阵的实现
关于邻接表的操作,只讲下创建邻接表. 首先依然是预定义和类型定义: #define OK 1 #define ERROR 0 #define MaxInt 32767 #define MVNum 10 ...
- 一文搞定深度优先搜索(DFS)与广度优先搜索(BFS)【含完整源码】
写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...
- 聊聊ClickHouse中的低基数LowCardinality类型
原文链接????:https://www.jianshu.com/p/f361e7cfc8b3 2020年快要过去了,写博客的习惯还是得捡起来.最近刚刚忙完搬家的事情,抽出一点时间简单聊两句. 为什么 ...
- 猿如意|chat GPT测评
文章目录 猿如意 猿如意传送门 猿如意个人使用感受 好的一面: 可以改进的一面: 什么是猿如意 chat GPT测评 chat GPT 关于通用的问题 问题1-如何写一篇会计论文 问题2 -如何规划自 ...
- C语言利用图的邻接矩阵的存储方式实现拓扑排序
C语言利用图的邻接矩阵的存储方式实现拓扑排序 在拓扑排序中,我们的对象是有向无环图,这种图是描述工程进行过程的有效工具.比如"课程开课顺序,施工进程,软件开发进程",我们在使用有向 ...
- 图之邻接矩阵详解(C语言版)
文章目录 一.定义 二.结构 三.常用操作 结语 附录 一.定义 图的邻接矩阵是一种采用邻接矩阵数组表示顶点之间相邻关系的存储结构.设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: ...
- 有向图邻接矩阵c语言编程,邻接矩阵有向图(一)之 C语言详解
本章介绍邻接矩阵有向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实 ...
- C语言 数据结构 图的邻接矩阵存储 基本操作(附输入样例和讲解)
代码参照了严蔚敏.吴伟民编写的数据结构(C语言版). 部分内容参考了这位大佬: https://blog.csdn.net/jeffleo/article/details/53326648 所有代码采 ...
最新文章
- mysql附件卸载_彻底卸载mysql
- 推荐一个非常火爆的电商开源项目!
- java与c内存管理_Java基础--Java内存管理与垃圾回收
- 审计 Linux 系统的操作行为的 5 种方案对比
- 【Spring学习】IoC、DI、AOP入门学习
- 容器学习 之 容器访问外部网络(十四)
- kafka maven没有下载_构建工具的进化:ant, maven, gradle
- Python安装、使用MySQL数据库
- matlab解带参数的积分方程组,方程组求解问题:方程组中有带参数的积分函数,求参数...
- 安防监控必备的基础知识
- [导入]c# GDI+简单绘图(一)
- 重置win10 恢复原厂设置
- html div单击事件,给div绑定点击事件三个方法
- 回顾|Apache Flink Meetup · 北京站(附问题解答 PPT 下载)
- html canvas 遮罩蒙版,canvas生成遮罩图片
- JS 获取输入时间的前一年、前三个月
- C/C++ 引用作为函数的返回值
- 鳄鱼战大象--疯狂之战
- 如何提高亚马逊排名?亚马逊排名规则有哪些?
- IP地址中的A、B、C类地址详解