数据结构—图的存储结构(邻接矩阵)
来源:互联网 发布:mysql in 值少会索引 编辑:程序博客网 时间:2024/05/17 23:02
邻接矩阵的代码
有向图/无向图
#include<iostream>#include<string>using namespace std;#define MAX_VERTEX_NUM 20#define INF 0typedef struct{ string vexs[MAX_VERTEX_NUM];//顶点数组.记录顶点的信息 int arc[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//邻接矩阵 int vexnum,arcnum;//顶点个数,边的条数}Graph;int create_graph(Graph &G){ int i,j; //输入顶点个数和边的条数 cout<<"输入顶点个数:"<<endl; cin>>G.vexnum; cout<<"输入边的条数:"<<endl; cin>>G.arcnum; //将顶点信息保存起来 cout<<"逐行输入图的起始点和终端点:"<<endl; for(i=0;i<G.vexnum;i++) { cin>>G.vexs[i]; } //初始化邻接矩阵,将每条与边相关的信息都设置为INF for(i=0;i<G.vexnum;i++) { for(j=0;j<G.vexnum;j++) { G.arc[i][j]=INF; } } return 1;}int locate(Graph G,string v){ int i; for(i=0;i<G.arcnum;i++) { if(v==G.vexs[i]) return i; } return -1;}//此处存入的是有向图int deposit(Graph &G){ string v1,v2; int m,n; cout<<"请输入您要存储的顶点信息:"<<endl; for(int i=0;i<G.arcnum;i++) { cin>>v1>>v2; m=locate(G,v1); n=locate(G,v2); G.arc[m][n]=1; //若要存储无向图,由于无向图的邻接矩阵具 //有对称性,则只需在此处加上 //G.arc[n][m]=1; } return 1;}void display(Graph G){ cout<<"图的邻接矩阵显示如下:"<<endl; for(int i=0;i<G.vexnum;i++) { for(int j=0;j<G.vexnum;j++) { cout<<G.arc[i][j]<<" "; } cout<<endl; }}int main(){ Graph G; //初始化矩阵 if(create_graph(G)) { cout<<"初始化矩阵成功!"<<endl; } //向初始化矩阵中输入要存入的矩阵信息 if(deposit(G)) { cout<<"向矩阵中存储信息成功!"<<endl; } //打印矩阵 display(G); return 0;}
有向网/无向网
#include<iostream>#include<string>using namespace std;#define MAX_VERTEX_NUM 20#define INF 999typedef struct{ string vexs[MAX_VERTEX_NUM];//顶点数组.记录顶点的信息 int arc[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//邻接矩阵 int vexnum,arcnum;//顶点个数,边的条数}Graph;int create_graph(Graph &G){ int i,j; //输入顶点个数和边的条数 cout<<"输入顶点个数:"<<endl; cin>>G.vexnum; cout<<"输入边的条数:"<<endl; cin>>G.arcnum; //将顶点信息保存起来 cout<<"请依次输入顶点信息:"<<endl; for(i=0;i<G.vexnum;i++) { cin>>G.vexs[i]; } //初始化邻接矩阵,将每条与边相关的信息都设置为INF for(i=0;i<G.vexnum;i++) { for(j=0;j<G.vexnum;j++) { G.arc[i][j]=INF; } } return 1;}int locate(Graph G,string v){ int i; for(i=0;i<G.arcnum;i++) { if(v==G.vexs[i]) return i; } return -1;}//此处存入的是有向图int deposit(Graph &G){ string v1,v2; int m,n; int weight; cout<<"请输入您要存储的顶点信息:"<<endl; for(int i=0;i<G.arcnum;i++) { cin>>v1>>v2; cin>>weight; m=locate(G,v1); n=locate(G,v2); G.arc[m][n]=weight; //若要改为无向网,则只需在此处再加上 //G.arc[n][m]=weight; } return 1;}void display(Graph G){ cout<<"图的邻接矩阵显示如下:"<<endl; for(int i=0;i<G.vexnum;i++) { for(int j=0;j<G.vexnum;j++) { if(G.arc[i][j]==INF) cout<<"∞"; else cout<<G.arc[i][j]<<" "; } cout<<endl; }}int main(){ Graph G; //初始化矩阵 if(create_graph(G)) { cout<<"初始化矩阵成功!"<<endl; } //向初始化矩阵中输入要存入的矩阵信息 if(deposit(G)) { cout<<"向矩阵中存储信息成功!"<<endl; } //打印矩阵 display(G); return 0;}
图和网的区别只在于边上有没有与边相关联的权值
0 0
- 数据结构—图的存储结构(邻接矩阵)
- 数据结构:图的存储结构之邻接矩阵
- 数据结构:图的存储结构之邻接矩阵
- 数据结构:图的存储结构之邻接矩阵
- 大话数据结构十八:图的存储结构之邻接矩阵
- 【数据结构笔记】3:无向图的邻接矩阵存储结构
- 数据结构—图的邻接矩阵存储
- 数据结构(C++)<图的邻接矩阵存储>
- 图的存储结构——邻接矩阵
- 图的存储结构——邻接矩阵
- 图的存储结构(邻接矩阵)
- 图的存储结构(邻接矩阵法)
- 【数据结构】图的存储--邻接矩阵
- 图的邻接矩阵存储结构
- 图的存储结构 邻接矩阵
- 图的存储结构 --- 邻接矩阵
- 图的邻接矩阵存储结构
- 图的存储结构-邻接矩阵
- FFmpeg安装(Centos6.5)
- 使用babel写ES6语法
- ransca算法详细介绍
- Unity血条实现
- Kalilinux安装Genymotion
- 数据结构—图的存储结构(邻接矩阵)
- ubuntu下安装librecad
- 调试中间代码
- 更新系统后cocoapods的使用问题
- 串口通信Rs232和TTL
- startActivityForResult小坑
- 代码块,静态代码块以及构造方法的执行顺序
- 拼图响应式前端框架版响应式后台正式发布
- 用intellig IDEA开发 Spring MVC第一篇