#include<iostream>
#include<queue>
#include<string>
#include<fstream>
#include<iomanip>
using namespace std;
const int MaxSize=10;
//辅助prim
struct shortEdge{
int edgeIndex; //边的编号
int lowcost; //最小权值
};
template<class DataType>//由于顶点数据的类型不确定
class Graph
{
private:
int GType;//图的类型0:无向图 1:有向图
DataType vertex[MaxSize];//定义数组,保存顶点数据
int edge[MaxSize][MaxSize];//边
int vertexNum, edgeNum;
int isTrav[MaxSize];
int visited[MaxSize];
public:
Graph(DataType a[], int n, int e);//构造函数,简历具有n个顶点,e条边的图
~Graph(){ } //析构函数为空
void resetVisted();
void DFSTraverse(int v);//Depth—first traverse深度优先遍历
void BFSTraverse(int v);//Breadth—first traverse广度优先遍历
template<class T>
friend void prim(Graph<T> G);//友元函数,用于访问类中的私有成员。最小生成树的prim算法
};
//构造函数
//邻接矩阵初始化为-1,表示没有路径
template<class DataType>
Graph<DataType>::Graph(DataType a[], int n,
【图】邻接矩阵及最小生成树(C++)
最新推荐文章于 2024-08-19 20:15:42 发布