用邻接矩阵存储图(C++实现)

根据陈越姥姥的数据结构书改编的C++代码

#include<iostream>
using namespace std;
#define INFINITY 0  //代表两个顶点之间没有边相连 
class ENode        //边 
{
 public:
  int V1,V2;//代表边的起点和终点
  int Weight;//代表边的权值
};
class Graph  //图 
{
 public:
  int Nv,Ne;//Nv为图的顶点数目,Ne为图的边数
  int G[100][100];
  void CreateGraph(int VertexNum);
  void InsertEdge(ENode *E);
};
void Graph::CreateGraph(int VertexNum)//初始化一个有VertexNum个顶点但是没有边的图 
{
 
 Nv=VertexNum;
 Ne=0;
 //初始化邻接矩阵
 for(int i=0;i<VertexNum;i++) 
 {
  for(int j=0;j<VertexNum;j++)
  {
   G[i][j]=INFINITY; 
  }
 }
 
}
void Graph::InsertEdge(ENode *E)//在图中插入边
{
 G[E->V1][E->V2]=E->Weight;
 G[E->V2][E->V1]=E->Weight;
}

Graph *BuildGraph()//建立一个图
{
 Graph *graph=new Graph();
 ENode *E;
 int Nv;
 cout<<"输入顶点的个数:";
 cin>>Nv;
 graph->CreateGraph(Nv);
 cout<<"输入边的条数:";
 cin>>graph->Ne;
 if(graph->Ne!=0)
 {
  E=new ENode();
  cout<<"分别输入边的起点,终点,权重:"<<endl;
  for(int i=0;i<graph->Ne;i++)
  {
   cin>>E->V1>>E->V2>>E->Weight;
   graph->InsertEdge(E);
  }
 
 }
 
 return graph; 
}

void PrintfGraph(Graph *graph)//打印邻接矩阵
{
 for(int i=0;i<graph->Nv;i++)
 {
  for(int j=0;j<graph->Nv;j++)
  {
   cout<<graph->G[i][j]<<"\t";
  }
  cout<<endl;
 }
}

int main()
{
 Graph *graph=NULL;
 graph=BuildGraph();
 PrintfGraph(graph);
 return 0;
}

运行结构如下

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值