资源简介
实现图的判断,图的拓扑排序,单源最短路径,求最大生成树等主要算法!!!
代码片段和文件信息
#include
#include
#include
//====================================================================
const int MaxVertices=10;
const int MaxWeight=32767;
class AdjMGraph
{
private:
char Vertices[MaxVertices][10];//顶到信息的数组
int cost[MaxVertices][MaxVertices];//边的权信息的矩阵
int numEnumVv0;//当前的边数,顶点数,源点号
int dist[MaxVertices]pre[MaxVertices];//距离,路径的数组
int flag;//图的类型
public:
AdjMGraph();
void CreatG(int nint e);
void PrintOut(); //输出邻接矩阵
void dijkstra(); //迪杰斯特拉求最短路径
void disply(); //输出最短路径以及长度
void JudgeG(); //判断函数
void TopSort(); //拓扑排序
};
//==================================================================
AdjMGraph::AdjMGraph()
{
int ij;
for(i=0;i {
dist[i]=0;pre[i]=0;
}
for(i=0;i {
for(j=0;j if(i==j)
cost[i][j]=0;
else
cost[i][j]=MaxWeight;
}
numE=0;
numV=0;
}
//=======================================================================
void AdjMGraph::CreatG(int nint e)
{
int vivjw;
numE=e;
numV=n;
cout<<“输入点的信息:“;
for(int i=0;i {
cout<<“\n“< cin>>Vertices[i];
}
char k;
do{
cout<<“\n 输入边的信息(vivjw): “;
cin>>vi>>vj>>w;
cost[vi-1][vj-1]=w;
cout<<“是否继续(Y/N):“;
cin>>k;
}while(k==‘Y‘);
}
//==================================================================================
void AdjMGraph::JudgeG()
{
int ij;
bool x=1y=0;
for(i=0;i {
do{
for(j=0;j {
if(i!=j)
{
if((cost[i][j]!=cost[j][i])||(cost[i][j]==MaxWeight)||(cost[j][i]==MaxWeight))//该图有向
{
flag=1;
x=0;
break;
}
if(cost[i][j]==cost[j][i]) //该图无向
{
flag=2;
x=0;
}
}
}
}while(x==1);
break;
}
switch(flag)
{
case 1:
{
for(i=0;i {
if(cost[i][i]!=0)
{y=0;break;}
else
y=1;
}
if(y==1)
cout<<“该图为有向无环图“< else
cout<<“该图为有向带环图“< }
break;
case 2:
{
for(i=0;i {
if(cost[i][i]!=0)
{y=0;break;}
else
y=1;
}
if(y==1)
cout<<“该图为无向图“< else
cout<<“该图为无向带环图“< }
break;
}
}
//==========================================================================================
void AdjMGraph::PrintOut()
{
int j;
cout<<“\n 输出顶点的信息:\n“;
for(int i=0;i cout< cout<<“\n 输出邻接矩阵: “;
for(i=0;i {
cout<<“\n“< for(j=0;j cout< cout< }
}
//=================================================================================================
void AdjMGraph::dijkstra() //求n各顶点,邻接矩阵为cost,从源点i0到个顶点的最短路径
{ //dist记载从源点到其余各顶点的最短路径长度
int iuminjv; //pre记载
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 180868 2010-07-09 12:12 0810569_05_赵连云\0810569_05_赵连云.docx
文件 217156 2010-06-11 21:30 0810569_05_赵连云\Graph\Debug\Grahp.exe
文件 23778 2010-06-11 21:30 0810569_05_赵连云\Graph\Debug\Grahp.obj
文件 541696 2010-06-11 21:30 0810569_05_赵连云\Graph\Debug\Grahp.pdb
文件 217132 2010-06-08 22:25 0810569_05_赵连云\Graph\Debug\Graph.exe
文件 517120 2010-06-08 22:25 0810569_05_赵连云\Graph\Debug\Graph.pdb
文件 69632 2010-06-11 21:30 0810569_05_赵连云\Graph\Debug\vc60.pdb
文件 6066 2010-06-11 21:27 0810569_05_赵连云\Graph\Grahp.cpp
文件 3389 2010-06-08 22:28 0810569_05_赵连云\Graph\Grahp.dsp
文件 518 2010-06-08 23:16 0810569_05_赵连云\Graph\Grahp.dsw
文件 50176 2010-06-11 21:38 0810569_05_赵连云\Graph\Grahp.ncb
文件 48640 2010-06-11 21:38 0810569_05_赵连云\Graph\Grahp.opt
文件 741 2010-06-11 21:30 0810569_05_赵连云\Graph\Grahp.plg
目录 0 2010-09-05 11:41 0810569_05_赵连云\Graph\Debug
目录 0 2010-07-29 09:01 0810569_05_赵连云\Graph
目录 0 2010-07-29 09:01 0810569_05_赵连云
----------- --------- ---------- ----- ----
1876912 16
- 上一篇:stm32 外部上升沿触发ADC采集
- 下一篇:客户关系管理系统.rar
评论
共有 条评论