数据结构与算法—邻接矩阵创建无向图

#include <iostream>
using namespace std;

#define MaxVnum 100  //顶点数最大值
typedef char VexType;  //顶点的数据类型,根据需要定义 //typedef:专门起外号的 
typedef int EdgeType;  //边上权值的数据类型,若不带权值的图,则为0或1
typedef struct{
	VexType Vex[MaxVnum];  //顶点数组 
	EdgeType Edge[MaxVnum][MaxVnum];  //二维数组 
	int vexnum,edgenum;  //顶点数,边数 
}AMGraph;

int locatevex(AMGraph G,VexType x)
{
	for (int i=0; i<G.vexnum; i++)  //查找顶点信息的下标 
		if(x==G.Vex[i])
			return i;
		return -1;  //没找到 
}

void CreateAMGraph(AMGraph &G) 
{
	int i,j;
	VexType u, v;
	cout<<"请输入顶点数:"<<endl;
	cin>>G.vexnum;
	cout<<"请输入边数:"<<endl;
	cin>>G.edgenum;
	cout<<"请输入顶点信息:"<<endl;
	for(int i=0; i<G.vexnum; i++)  //输入顶点信息,存入顶点信息数组
		cin>>G.Vex[i];
	for(int i=0; i<G.vexnum; i++)  //初始化邻接矩阵所有值为0,如果是网,则初始化为无穷大
	  for(int j=0; j<G.vexnum; j++)
	  	 G.Edge[i][j]=0;
	cout<<"请输入每条边依附的两个顶点:"<<endl;
	while(G.edgenum--)
	{
		cin>>u>>v;
		i=locatevex(G,u);  //查找顶点u的存储下标 
		j=locatevex(G,v);  //查找顶点v的存储下标 
		if(i!=-1&&j!=-1)
	      G.Edge[i][j]=G.Edge[i][j]=1;  //邻接矩阵储置1 
	    else
	    {
	    	cout<<"讨厌!你个大笨居输错了啦!!!"<<endl;
	    	G.edgenum++;  //本次输入不算 
		}
	}
}

void print(AMGraph G)  //输出邻接矩阵
{
	cout<<"图的邻接矩阵为:"<<endl;
	for(int i=0; i,G.vexnum; i++)
	{
		for(int j=0; j<G.vexnum; j++)
		 cout<<G.Edge[i][j]<<"\t";
		cout<<endl;
	} 
} 

int main()
{
	AMGraph G;
	CreateAMGraph(G);
	print(G);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值