图的存储以及深度优先和广度优先

这篇博客介绍了如何使用C++实现图的存储,包括邻接矩阵和邻接表,并详细阐述了深度优先搜索(DFS)和广度优先搜索(BFS)的算法,通过读取文件数据进行图的构建,然后输出搜索结果。
摘要由CSDN通过智能技术生成
<span style="font-size:18px;">   </span><pre name="code" class="cpp">/*
图的存储与遍历
1.读取文件data中图的信息
2.创建图->临接矩阵
3.输出顶点以及临接矩阵
4.将临接矩阵存储转换为临接表存储
5.输出临接表
6.输出深度优先搜素结果
7.输出广度优先搜索结果
*/

#include<iostream>
#include<string>
#include<sstream>
#include<fstream>
using namespace std;

//定义矩阵存储空间
const int MAX_N = 100;//存储空间最大值
const int INF = 65535;//定义为无穷大

//图的矩阵存储
//顶点信息
class Vertex
{
public:
	int number;//定义定点下标
	int verxname;//顶点名
};

//邻接矩阵存储图
class MGraph
{
public:
	int edages[MAX_N][MAX_N];//边数组
	int weight[MAX_N];//权重
	int Tvertexs, Tedges;//顶点及边总数
	Vertex vert[MAX_N];//顶点信息
};

//临接表存储
class Anode;
//顶点
class Vnode
{
public:
	int adjverx;//边终点编号
	Anode *firstAnode;//下一顶点
};
//边
class Anode
{
public:
	int weight;//权重
	int vesname;//顶点名称
	Anode *nextAnode;//下一顶点
};

//临接表存储图
class FGraph
{
public:
	Vnode adjList[MAX_N];//顶点信息
	int Tvertexs, Tedges;//总顶点数、边数
};


class Graph
{
public:
	Graph()
	{
		InitMatrix();//初始化临接矩阵
	}

	~Graph(){}

	//初始化
	void InitMatrix()
	{
		for (int i = 0; i < MAX_N; i++)
		{
			for (int j = 0; j < MAX_N; j++)
			{
				mgraph.edages[i][j] = INF;//初始化为无穷大
			}
		}
	}

	//初始化遍历数组
	void InitVisited()
	{
		for (int i = 0; i < MAX_N; i++)
		{
			visited[i] = INF;//初始化为无穷大
		}
	}

	//读取信息
	void getInfo(string filename)
	{
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值