一、实验目的
1.掌握图的邻接矩阵和邻接表存储结构;
2.熟练掌握图的深度优先遍历和广度优先遍历算法,复习栈和队列的应用。
二、实验内容
1.图的邻接矩阵定义及实现:
定义图的邻接矩阵存储结构,并编写建立图、输出图的每个顶点的度、输出深度优先遍历的顶点序列和广度优先遍历的顶点序列等基本操作实现函数。
2.图的邻接表的定义及实现:
定义图的邻接表存储结构,并编写建立图、输出图的每个顶点的度、输出深度优先遍历的顶点序列和广度优先遍历的顶点序列等基本操作实现函数。
三、实验环境
Dev C++
四、程序分析与实验结果
#include<iostream>
using namespace std;
#define MaxInt 32767 //表示极大值,即∞
#define MVNum 100 //最大顶点数
#define Status int
#define ok 1
#define OtherInfo char
#define VerTexType char
#define MVNum 100 //最大顶点数
int visited[MVNum];
typedef struct ArcNode{ //边结点
int adjvex; //该边所指向的顶点的位置
struct ArcNode *nextarc; //指向下一条边的指针
OtherInfo info; //和边相关的信息
}ArcNode;
typedef struct VNode{
VerTexType data; //顶点信息
ArcNode *firstarc; //指向第一条依附该顶点的边的指针
}VNode, AdjList[MVNum]; //AdjList表示邻接表类型
typedef struct{
AdjList vertices; //邻接表
int vexnum, arcnum; //图的当前顶点数和边数
}ALGraph;
Status LocateVex(ALGraph G,VerTexType x)//CreateUDG里面