グラフストレージ構造-隣接行列

隣接行列の配列表現

ここに画像の説明を挿入します

無向グラフの隣接行列

ここに画像の説明を挿入します

無向グラフの隣接行列の特徴

ここに画像の説明を挿入します

頂点iの次数

ここに画像の説明を挿入します

頂点iのすべての隣接する点を見つけます

ここに画像の説明を挿入します

有向グラフの隣接行列

ここに画像の説明を挿入します

頂点iの次数を見つける

ここに画像の説明を挿入します

頂点iの次数を見つける

ここに画像の説明を挿入します

頂点iから頂点jにエッジがあるかどうかを判断する方法

ここに画像の説明を挿入します

隣接行列

ネットグラフの定義:両側に重みがあるグラフはネットと呼ばれます
ここに画像の説明を挿入します

隣接行列の無向グラフクラス

ここに画像の説明を挿入します

隣接行列のグラフのコンストラクターここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します

デモンストレーション

ここに画像の説明を挿入します

#include<iostream>
using namespace std;
const int MAX = 10; //图的最大顶点个数为10
typedef char DataType;
class Graph 
{
    
    
private:
	//边的个数
	int arcNum;
	//顶点个数
	int vertexNum;
	//定义一个存放顶点的一位数组
	DataType vertex[MAX];
	//定义一个存放顶点间的边关系的二维数组
	int arc[MAX][MAX];
public:
	//v[]数组存放用户输入的一维数组的顶点数据,n表示顶点个数,e是边的个数
	Graph(DataType v[], int n, int e);
   //定义一个输出函数
	void display()
	{
    
    
		/*arc[1][3] = 1;
		arc[3][1] = 1;*/
		for (int i = 0; i <vertexNum; i++)
		{
    
    
			for (int j = 0; j < vertexNum; j++)
			{
    
    
				cout << arc[i][j]<<" ";
			}
			cout << endl;
		}
	}
};
//有参构造函数的实现
Graph::Graph(DataType v[], int n, int e)
{
    
    
	//初始化顶点个数
	vertexNum = n;
	//初始化边的个数
	arcNum = e;
	//初始化顶点数组
	for (int i = 0; i < MAX; i++)
		vertex[i] = v[i];
	//初始化边数组
	for (int i = 0; i < MAX; i++)
		for (int j = 0; j < MAX; j++)
			arc[i][j] = 0;
	//由用户来决定,哪两个顶点之间存在边
	int vi=0, vj=0;
	for (int i = 0; i < arcNum; i++)
	{
    
    
		cin >> vi >> vj;//输入边依附的两个顶点编号
		//这是无向图的边初始化标志
		arc[vi][vj] = 1;//有边的标志
		arc[vj][vi] = 1;
	}
}
//测试-------------------
void test()
{
    
    
	DataType v[5] = {
    
     'V0','V1','V2','V3' };
	Graph p(v, 4, 4);
	//输出测试
	p.display();
}
int main()
{
    
    
	
	test();
	system("pause");
	return 0;
}

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/m0_53157173/article/details/114991730