graph.h
#ifndef GRAPH_H
#define GRAPH_H
#include<vector>
using namespace std;
class edge;
class vertex //顶点
{
friend void connect ( vertex& , vertex& , int ); //建立关系
friend void bfs (const vertex& , int ); //广度遍历
friend void bfs ( vertex& , vertex& , int n );
public:
bool operator!=( const vertex& );
vertex *pPre = nullptr; //用于记录路径,指向第一个到达该顶点的顶点。
int ID = 0; //顶点的独一无二的序号,构造时给定。
private:
int in_degree = 0; //入度
int out_degree = 0; //出度
vector<edge> incident_edge; //关联边的集合
};
class edge //边
{
friend void connect ( vertex& , vertex& , int );
friend void bfs ( const vertex& , int );
friend void bfs ( vertex& , vertex& , int n );
public:
edge ( vertex& , int );
private:
int weight = 0; //权重
vertex* pNext = nullptr; //指向的顶点
};
#endif
graph.cpp