/*** C++: 邻接矩阵图** @author judyge* @date 2014/04/19*/#include <iomanip>
#include <iostream>
#include <vector>
using namespace std;#define MAX 100
class MatrixDG {private:char mVexs[MAX];    // 顶点集合int mVexNum;             // 顶点数int mEdgNum;             // 边数int mMatrix[MAX][MAX];   // 邻接矩阵public:// 创建图(自己输入数据)MatrixDG();// 创建图(用已提供的矩阵)MatrixDG(char vexs[], int vlen, char edges[][2], int elen);~MatrixDG();// 打印矩阵队列图void print();private:// 读取一个输入字符char readChar();// 返回ch在mMatrix矩阵中的位置int getPosition(char ch);
};/* * 创建图(自己输入数据)*/
MatrixDG::MatrixDG()
{char c1, c2;int i, p1, p2;// 输入"顶点数"和"边数"cout << "input vertex number: ";cin >> mVexNum;cout << "input edge number: ";cin >> mEdgNum;if ( mVexNum < 1 || mEdgNum < 1 || (mEdgNum > (mVexNum * (mVexNum-1)))){cout << "input error: invalid parameters!" << endl;return ;}// 初始化"顶点"for (i = 0; i < mVexNum; i++){cout << "vertex(" << i << "): ";mVexs[i] = readChar();}// 初始化"边"for (i = 0; i < mEdgNum; i++){// 读取边的起始顶点和结束顶点cout << "edge(" << i << "): ";c1 = readChar();c2 = readChar();p1 = getPosition(c1);p2 = getPosition(c2);if (p1==-1 || p2==-1){cout << "input error: invalid edge!" << endl;return ;}mMatrix[p1][p2] = 1;}
}/** 创建图(用已提供的矩阵)** 参数说明:*     vexs  -- 顶点数组*     vlen  -- 顶点数组的长度*     edges -- 边数组*     elen  -- 边数组的长度*/
MatrixDG::MatrixDG(char vexs[], int vlen, char edges[][2], int elen)
{int i, p1, p2;// 初始化"顶点数"和"边数"mVexNum = vlen;mEdgNum = elen;// 初始化"顶点"for (i = 0; i < mVexNum; i++)mVexs[i] = vexs[i];// 初始化"边"for (i = 0; i < mEdgNum; i++){// 读取边的起始顶点和结束顶点p1 = getPosition(edges[i][0]);p2 = getPosition(edges[i][1]);mMatrix[p1][p2] = 1;}
}/* * 析构函数*/
MatrixDG::~MatrixDG()
{
}/** 返回ch在mMatrix矩阵中的位置*/
int MatrixDG::getPosition(char ch)
{int i;for(i=0; i<mVexNum; i++)if(mVexs[i]==ch)return i;return -1;
}/** 读取一个输入字符*/
char MatrixDG::readChar()
{char ch;do {cin >> ch;} while(!((ch>='a'&&ch<='z') || (ch>='A'&&ch<='Z')));return ch;
}/** 打印矩阵队列图*/
void MatrixDG::print()
{int i,j;cout << "Martix Graph:" << endl;for (i = 0; i < mVexNum; i++){for (j = 0; j < mVexNum; j++)cout << mMatrix[i][j] << " ";cout << endl;}
}int main()
{char vexs[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};char edges[][2] = {{'A', 'B'}, {'B', 'C'}, {'B', 'E'}, {'B', 'F'}, {'C', 'E'}, {'D', 'C'}, {'E', 'B'}, {'E', 'D'}, {'F', 'G'}}; int vlen = sizeof(vexs)/sizeof(vexs[0]);int elen = sizeof(edges)/sizeof(edges[0]);MatrixDG* pG;// 自定义"图"(输入矩阵队列)//pG = new MatrixDG();// 采用已有的"图"pG = new MatrixDG(vexs, vlen, edges, elen);pG->print();   // 打印图return 0;
}

ACM模板--邻接矩阵 有向图相关推荐

  1. ACM模板--邻接矩阵 有向图 搜索算法

    /*** C++: 邻接矩阵图** @author judyge* @date 2014/04/19*/#include <iomanip> #include <iostream&g ...

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

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

  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模板--链接表 有向图

    /*** C++: 邻接表图** @author judyge* @date 2014/04/19*/#include <iomanip> #include <iostream> ...

  6. 我的所有优质博客全部开源啦(我自己原创的《ACM模板》《算法全家桶》《算法竞赛中的初等数论》 PDF免费下载)

    你好呀ヾ(≧▽≦*)o 我是繁凡さん 这两年来我写了很多长篇文章,主要涉及数据结构,算法,程序设计竞赛,数学,计算几何等方面的内容: <数据结构>C语言版(清华严蔚敏考研版) 全书知识梳理 ...

  7. 线性求逆元模板_ZXBlog/ACM模板(C++).md at bb6f2522054d5370df79222461293721e8edede2 · cw1027/ZXBlog · GitHub...

    ACM模板(C++) 1.大数 加法,乘法模板 //题目链接 : http://poj.org/problem?id=2506 //题目大意 : 就是问你用2*1,1*2,2*2的砖拼成2*n的长方形 ...

  8. ACM模板(满注释模板!)

    转自:https://fanfansann.blog.csdn.net/article/details/105493218 目录 F o r e w o r d ForewordForeword T ...

  9. 邻接矩阵有向图的介绍

    邻接矩阵有向图的介绍 邻接矩阵有向图是指通过邻接矩阵表示的有向图. 上面的图G2包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"<A,B>,< ...

最新文章

  1. 如何在不使用任何图像或跨度标签的情况下通过CSS在UL / LI html列表中设置子弹颜色[复制]
  2. 如何提高Linux下块设备IO的整体性能?
  3. jQuery中排除指定元素,同时选择剩下的所有元素
  4. Linux shell 对于文件的删除,复制,修改文件名等操作
  5. apache ftp server的外网访问问题
  6. android 滑动冲突
  7. 信息学奥赛一本通 1091:求阶乘的和 / 2026:【例4.12】阶乘和 / OpenJudge NOI 1.5 34
  8. 数据预处理-数据规约-属性规约
  9. Scala类型系统的目的——Martin Odersky访谈(三)
  10. oracle 10g RAC app VIP ,ONS,GSD,ASM,OCR,VOTE名称及代表的涵义。
  11. Logstash 初探
  12. easyUI_rowdata
  13. 2019《中国智慧城市建设产业全景图谱》
  14. native8081端口 react_教你轻松修改React Native端口(如何同时运行多个React Native、8081端口占用问题)...
  15. TortoiseSVN右键没有菜单
  16. 进阶-第28__深度探秘搜索技术_实战掌握误拼写时的fuzzy模糊搜索技术
  17. Python实现对某微博用户数据分析
  18. 远程 PC 访问软件
  19. 逆光人物摄影构图灵感经验分享,在集设网参与设计大咖的成长之路!
  20. jmeter-连接数据库

热门文章

  1. 【IOC 控制反转】Android 布局依赖注入 ( 布局依赖注入步骤 | 布局依赖注入代码示例 )
  2. 【OkHttp】Android 项目导入 OkHttp ( 配置依赖 | 配置 networkSecurityConfig | 配置 ViewBinding | 代码示例 )
  3. 【Android 组件化】路由组件 ( 使用 JavaPoet 生成路由表类 )
  4. 【Netty】使用 Netty 开发 HTTP 服务器 ( HTTP 请求过滤 )
  5. 【嵌入式开发】时钟初始化 ( 时钟相关概念 | 嵌入式时钟体系 | Lock Time | 分频参数设置 | CPU 异步模式设置 | APLL MPLL 时钟频率设置 )
  6. .dll与.lib的关系总结
  7. PIE_SDK.NET功能表
  8. BZOJ 3884 上帝与集合的正确用法 (欧拉定理)
  9. 【ASP.NET MVC 学习笔记】- 16 Model Binding(模型绑定)
  10. JavaScript的数据访问总结