正文

图的邻接矩阵创建算法2006-05-08 23:08:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/jixian/13748.html

分享到:

#include <iostream>
#include<stdio.h>
using namespace std;


#define FINITY 5000  //此处用5000代表最大
#define m 20         //最大顶点树
typedef char vertextype;  //顶点值类型
typedef int edgetype;       //权值类型

typedef struct
{
 vertextype vexs[m];      //顶点值类型
 edgetype edges[m][m];    //邻接矩阵
 int n,e;                //顶点总数 和 边树
}mgraph;                    //邻接矩阵表示的图类型


// 图的邻接矩阵创建算法

 

void createmgraph1(mgraph *g)
{
 int i,j,k,w;
 cout<<"\n输入图的顶点数:";
 cin>>g->n;
 cout<<"\n输入图的边数:";
 cin>>g->e;
 getchar();                      //取消输入的换行符
 
 cout<<"\n请输入顶点信息:";
 for(i=0;i<g->n;i++)
 {
  char c;
  cin>>c;
  g->vexs[i]=c;
 }

 //初始化邻接矩阵

 for(i=0;i<g->n;i++)
  for(j=0;j<g->n;j++)
   if(i==j)
    g->edges[i][j]=0;
   else
    g->edges[i][j]=FINITY;
   
    cout<<"\n输入边的信息:\n";
 cout<<"\ni--->j  值为w.\n";
 for(k=0;k<g->e;k++)
 {
  cin>>i;                //? 怎么把输入格式转为 i----->j???
 
//  cout<<"---->";
  cin>>j;
  
  cin>>w;
  g->edges[i][j]=w;
  g->edges[j][i]=w;               //此处建立无向图
 
 }
}

   
// 输出此无向图

void print(mgraph g)
{
 cout<<"\n此无向图共有"<<g.n<<"个结点,  "<<g.e<<"条边.\n";
 cout<<"\n结点信息为:";
 for(int i=0;i<g.n;i++)
  cout<<g.vexs[i]<<"  ";
 cout<<"\n邻接矩阵图为:\n";
 for(i=0;i<g.n;i++)
 {
  for(int j=0;j<g.n;j++)
   cout<<g.edges[i][j]<<"     ";
  cout<<endl;
 }
}

int main()
{
 mgraph g;
 
 createmgraph1(&g);
 
 print(g);
}


 

阅读(5770) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册