08.01 邻接矩阵

一:图

在这里插入图片描述

在这里插入图片描述
<>有序对 对偶
()无序对
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

//邻接矩阵创建无向图
#include <iostream>
using namespace std;

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

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

void CreateAMGraph(AMGragh& 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[j][i] = 1; //邻接矩阵储置1
		else
		{
			cout << "输入顶点信息错!请重新输入!" << endl;
			G.edgenum++;//本次输入不算
		}
	}
}

void print(AMGragh 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()
{
	AMGragh G;
	CreateAMGraph(G);
	print(G);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值