无向图的邻接矩阵 需要n维矩阵和n个顶点集
    因此结构体需要:
        1,一个二维数组(长度都是顶点个数),用来表示矩阵 
        2,一个顶点集(用来保存顶点)
        3,图当前顶点的边数和顶点个数

#include <stdio.h>
#include <stdlib.h>// /无向图邻接矩阵的定义
#define End '#' //当键入为该值时顶点表示为空
#define MaxVerNum 10//图的顶点最大个数
typedef int EdgElemType;//矩阵的数据类型
typedef char VerElemType;//顶点的数据类型
typedef struct{ //无向图邻接矩阵的定义 EdgElemType edg[MaxVerNum][MaxVerNum];//矩阵 VerElemType ver[MaxVerNum];//顶点 int verNum,edgNum;//图当前的顶点个数和边个数
}MGraph;//基本操作的实现
#define MaxInt 999 //权值最大值(表示两顶点间无边连接)//查找具体的顶点e在矩阵中位置
int LocateVer(MGraph G,VerElemType e){int i =0;for( i;i < G.verNum;i++){if(G.ver[i] == e) return i;}return -1;//未找到具体的值
}//图的初始化
void InitMGraph(MGraph &G){G.ver[0] = End;//先将初始结点设为 # G.verNum = 1;//最小的结点个数 G.edgNum = 0;//将图当前结点的边数设置为空
}//图的创建
void CreateMGraph(MGraph &G){InitMGraph(G);//开始创建顶点集 printf("\n请输入要建立的图的所有顶点,输入#结束\n");VerElemType inVer;//键入的顶点
//  getchar(); scanf("%c",&inVer);int index = 0;//index是当前键入顶点的下标 //创建顶点 while(inVer != End&&G.verNum != MaxVerNum){G.ver[index++] = inVer;getchar();//将\n吸收 scanf("%c",&inVer);G.verNum = index;}//开始创建顶点间关系(邻接矩阵) //初始化邻接矩阵,将邻接矩阵的所有元素权值设为最大值 for(int i = 0;i < G.verNum;i++){for(int j = 0;j < G.verNum;j++){G.edg[i][j] = MaxInt;}} //开始输入想要的边 printf("\n请输入要建立边的个数");scanf("%d",&G.edgNum); printf("\n请输入要建立的顶点间的关系(输入1表示两顶点间存在边)\n");int j = 0;//表示已输入了j条边 VerElemType str,end;//开始和结尾顶点 //键入需要的边 while(j < G.edgNum){printf("\n请输入开始顶点:  ");getchar(); scanf("%c",&str);printf("\n请输入结尾顶点:   ");getchar(); scanf("%c",&end);     //找到键入顶点的下标 int s = LocateVer(G,str);int e = LocateVer(G,end);G.edg[s][e] = 1;G.edg[e][s] = 1;//由于是无向图,所以也要设置反方向的边 printf("\n已在%c->%c之间建立边",str,end);j++;}
}void ShowMGraph(MGraph G){int e = 0;//记录当前展示了几条边int v = 0;//记录当前展示了几个顶点printf("\n当前的顶点有:\n");while(v < G.verNum){printf("%c ",G.ver[v]);v++;} printf("\n当前的邻接矩阵为\n");for(int i = 0;i < G.verNum;i++)//输出每一行最开头的元素 printf("\t%c",G.ver[i]);printf("\n"); for(int i = 0;i < G.verNum;i++){printf("\n%c",G.ver[i]);//输出每一列最开头的元素 for(int j = 0;j < G.verNum;j++){printf("\t%d",G.edg[i][j]);}printf("\n");}
}int main(){MGraph G;CreateMGraph(G);ShowMGraph(G);
}

邻接矩阵——无向图的实现相关推荐

  1. 邻接矩阵无向图的介绍

    邻接矩阵无向图是指通过邻接矩阵表示的无向图. 上面的图G1包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"(A,C),(A,D),(A,F),(B,C),(C ...

  2. 邻接矩阵用c语言,邻接矩阵无向图(一)之 C语言详解

    本章介绍邻接矩阵无向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实 ...

  3. ACM模板--邻接矩阵 无向图 搜索算法

    /*** C++: 邻接矩阵表示的"无向图(Matrix Undirected Graph)"** @author judyge* @date 2014/04/19*/#inclu ...

  4. ACM模板--邻接矩阵 无向图

    /*** C++: 邻接矩阵表示的"无向图(List Undirected Graph)"** @author skywang* @date 2014/04/19*/#includ ...

  5. ACM模板--邻接矩阵 无向图 Prim Kruskal Dijkstra

    /*** C++: Dijkstra算法获取最短路径(邻接矩阵)** @author skywang* @date 2014/04/24*/#include <iomanip> #incl ...

  6. 有向图,无向图的邻接矩阵和邻接表模板

    图 图的定义 有向图 概念 模板 邻接矩阵 邻接表 无向图 概念 模板 邻接矩阵 邻接表 简单图 完全图 图的定义 图 GGG 由顶点集 VVV 和边集 EEE 组成,记为 G=(V,E)G=(V,E ...

  7. 图的两种存储形式(邻接矩阵、邻接表)

    图可以使用两种存储结构,分别是邻接矩阵和邻接表. 注意:一个图所对应的邻接矩阵唯一,所对应的邻接表不唯一 一.邻接矩阵 邻接矩阵以矩阵的形式存储图所有顶点间的关系.邻接矩阵具有以下特点: 1.邻接矩阵 ...

  8. 图的邻接矩阵(C语言)

    邻接矩阵 无向图和有向图在邻接矩阵中的表示方法: 无向图和有向图大同小异,在这里只以无向图为例,代码部分通过简单调整即可对应编译有向图 邻接矩阵数据类型定义 #define MaxVertices 1 ...

  9. 【数据结构】无向图(构造+遍历)

    目录 说在前面 无向图 相关概念 图的表示 构造 广度优先遍历 深度优先遍历-递归 深度优先遍历-非递归 Code 说在前面 实现语言:c++ vs版本:2017 无向图 相关概念 以下图为例 邻接矩 ...

最新文章

  1. 权限表管理之更新权限表数据
  2. jittor和pytorch生成网络对比之esrgan
  3. 解决MongoDB 日志文件过大,清理后还占用很大磁盘空间的问题
  4. 黑暗城堡 最短路径生成树
  5. 网络爬虫:基于对象持久化实现爬虫现场快速还原
  6. 怎么样处理好学科竞赛与文化课学习之间的关系,,学习下,,
  7. python使用近似公式计算e_python如何算自然底数e(方法二)
  8. 硬件:如何选购适合自己的显示器
  9. 分享10个值得关注的C语言开源项目
  10. 【渝粤教育】21秋期末考试电算化会计10169k2
  11. 轻松搞定RocketMQ入门 1
  12. 最新conda设置清华源
  13. android studio 收藏,Android Studio把文件加入收藏夹并打开的简单操作讲述
  14. Dos下面删除文件秘笈
  15. 国五条催生末班车效应 郑州二手房交易量激增
  16. 我的Android进阶之旅------android中一些特殊字符(如:←↑→↓等箭头符号)的Unicode码值
  17. 关于DataFactory工具使用说明(一)-----创建数据表
  18. 56腾讯搜狐优酷视频,utubu 视频去重去水印去logo字幕工具 搜狐网易爱拍b站视频,今日头条视频...
  19. 2023中国科学院大学计算机考研信息汇总
  20. python把桢写入txt_使用Tesseract+python进行图片转文字记录

热门文章

  1. 关闭谷歌Chrome浏览器历史记录提示
  2. 06-CSS盒模型详解
  3. 计算机老出现无法响应,win7电脑经常出现“程序未响应”的提示怎么办?
  4. 小知识 | Java中的“魔数”
  5. LWN:GFP 标志介绍以及移除 __GFP_ATOMIC!
  6. [置顶] LED办公楼宇照明节能方案及城市夜景照明节能方案
  7. ant design Vue 纯前端实现分页
  8. 如何在移动开发者的寒冬中破冰而出?
  9. “实名认证”与“实人认证”该怎么选?
  10. linux下kegg注释软件,科学网—生物信息——kegg分析的kobas软件的安装与使用 - 孙朋川的博文...