本代码实现了一系列基于C++的图的数据结构及其基本操作,重点介绍了图的构建方法和两种常见的遍历算法——深度优先搜索(DFS)和广度优先搜索(BFS)。
在处理序号或结点的输出时应注意数组的第一个元素以[0]开始。完成图的广度遍历代码的过程中,请自行查找资料来编写两个函数:FirstAdjVex(用于获取顶点v的第一个邻接顶点)和NextAdjVex(用于获取顶点v的下一个邻接顶点)。本次实验中,我们熟悉了图的初始化、深度与广度遍历,并掌握了队列的建立、入队和出队操作。此外,除了使用递归方法外,还可以通过栈来实现图的深度优先搜索。
以下是部分代码示例:
```cpp
#include
#include
using namespace std;
#define MaxInt 32767 // 表示极大值(例如无穷大)
#define MVNum 100 // 最大顶点数
typedef char VerTexType; // 假设顶点的数据类型为字符型
typedef int Status;
typedef int ArcType;
typedef int DataType;
// 定义访问数组,用于记录节点是否被访问过
int visited[100];
struct QNode { // 队列的链式存储结构定义
double data; // 数据元素
struct QNode *next; // 指针
};
typedef struct {
VerTexType vexs[MVNum]; // 顶点表
ArcType arcs[MVNum][MVNum]; // 邻接矩阵
int vexnum, arcnum; // 图的当前顶点数和边数
} AMGraph;
```