这是用邻接链表作存储结构的图类源代码,下面是图类的声明部分:
struct ArcNode //弧节点结构
{
int adjvex;
ArcNode *nextarc;
};
struct VexNode //顶点结构
{
int vexdata;
ArcNode *firstarc;
};
//邻接链表图类的声明。
class Graph
{
private:
static string str;
bool *visited; //是否访问标志
VexNode *adjlist; //邻接链表数组
int n; //已有顶点个数
int max; //可容纳的最大顶点个数
void dfs0(int v0,void visit(int& v));
void bfs0(int v0,void visit(int& v));
public:
Graph(int l); //建立一个最大顶点数为l的空图
Graph(VexNode adjl[],int l); //构造一个由adj1表示的顶点个数为l的邻接链表对象
Graph(int vex[],int arc[], int n); //以vex[]为顶点集,arc[]表示的邻接矩阵建立图
void instVex(int data); //插入顶点
void instArc(int v1,int v2); //插入边
string dfs(int v0,void visit(int& v)); //深度优先遍历
string bfs(int v0,void visit(int& v)); //广度优先遍历
static void func1(int& v); //遍历时执行的函数
static void func2(int& v); //遍历时执行的函数
static string inttostr(int v);
};
2020-01-04 03:14:51
13KB
邻接链表
图
1