<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)
{
图的存储以及深度优先和广度优先
最新推荐文章于 2022-09-26 20:41:46 发布
这篇博客介绍了如何使用C++实现图的存储,包括邻接矩阵和邻接表,并详细阐述了深度优先搜索(DFS)和广度优先搜索(BFS)的算法,通过读取文件数据进行图的构建,然后输出搜索结果。
摘要由CSDN通过智能技术生成