数据结构有向图的实现

添加链接描述

//有向连接矩阵
#include<iostream>
#include<iomanip>  //与精度设置有关的头文件
#include<stdio.h>
using namespace std;
#define MAXVEX 100
#define  INFINITY 65535
//邻接矩阵
typedef char Vertextype;//顶点类型
typedef int Edgetype;//边上的权值
typedef struct Mgraph{
Vertextype vexs[MAXVEX];//顶点表
Edgetype arc[MAXVEX][MAXVEX];//邻接矩阵
int numvertexes,numedges;//图中当前顶点数和边数
}Mgraph;
//创建图的邻接矩阵结构
void CreateMgraph(Mgraph *G){
int i,j,k,w;
cout<<"输入顶点数和边数:";
cin>>G->numvertexes>>G->numedges;
for(i=0;i<G->numvertexes;i++)//输入顶点数和边数
{
cout<<"请输入第"<<i<<"个顶点"<<endl;
cin>>G->vexs[i];
}
//初始化
for(i=0;i<G->numvertexes;i++)
	for(j=0;j<G->numvertexes;j++){
	if(i==j)
		G->arc[i][j]=0;//对角线元素的值位0 
	else
		G->arc[i][j]=INFINITY;
}
for(k=0;k<G->numedges;k++){
	cout<<"请输入边(vi,vj)的下标i,下标j,以及权值w:";
	cin>>i>>j>>w;
	G->arc[i-1][j-1]=w;//与无向图的区别就在这里
}
}
//输出图的邻接矩阵
void ShowMgraph(Mgraph G)
{
int i,j;
cout<<"\n打印结果:"<<endl;
cout<<"顶点元素为:"<<endl;
for(i=0;i<G.numvertexes;i++)
	cout<<G.vexs[i]<<" ";
cout<<endl;
cout<<"输出的邻接矩阵为:\n";
cout<<"\t";
for(i=0;i<G.numvertexes;i++)
printf("%8c",G.vexs[i]);
for(i=0;i<G.numvertexes;i++){
printf("\n%8c",G.vexs[i]);
for(j=0;j<G.numvertexes;j++){
if(G.arc[i][j]==65535)
printf("%8s","∞");
else
printf("%8d",G.arc[i][j]);
}
printf("\n");
}
cout<<endl;
}
int main(){
Mgraph G;
CreateMgraph(&G);
ShowMgraph(G);
return 0;
}

走一遍 代码 与上一篇博客很相像

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值