• 大小: 5KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-23
  • 语言: C/C++
  • 标签: Floyd  最短路径  

资源简介

用C++ 语言编写 用Floyd算法求有向图中任意两点间的最短路径 由用户输入顶点和有向边的信息

资源截图

代码片段和文件信息

#include
#include
#include
#include
#define MaxSize 30
#define Affinity 200
using namespace std;  
class AdjGraph
{
public:char *vexs;
   int **arcs;
   int *visited;int **adj;int **path;
   int vexnumarcnum;
   AdjGraph()
   {
   vexnum=arcnum=0;
   vexs=NULL;visited=NULL;arcs=NULL;adj=NULL;path=NULL;
   }
   AdjGraph(int vint a)
   {
   int ij;
   vexnum=v;arcnum=a;
   vexs=new char[vexnum];visited=new int[vexnum];
   arcs=(int **)new int*[vexnum];
   for(i=0;i    {
   arcs[i]=new int[vexnum];
   }
   for(i=0;i    {
   visited[i]=0;vexs[i]=‘\0‘;
   for(j=0;j    {
   arcs[i][j]=Affinity;
   }
   }
    adj=(int **)new int*[vexnum];
   for(i=0;i    {
   adj[i]=new int[vexnum];
   }
    path=(int **)new int*[vexnum];
   for(i=0;i    {
   path[i]=new int[vexnum];
   }
   
   }
   ~AdjGraph(){}
   int posvex(char x)
   {
   int i=0;
   for(i=0;i    {
   if(vexs[i]==x)
   break;
   }
   if(i    {return i;}
   else
   {return -1;}
   }
   void clearVisit()
   {
   int i;
   for(i=0;i    {
   visited[i]=0;
   }
   }
   bool CreateDUG()
   {
   cout<<“请输入顶点信息:“<    int i=0ab;char lr;
   for(i=0;i    {cin>>vexs[i];}
   for(i=0;i    {
   int w;
   cout<<“输入第“<    cin>>l>>r;
   a=posvex(l);b=posvex(r);
  cout<<“请输入该边的权重:“<    cin>>w;
   arcs[a][b]=w;
   }
   return true;
   }
   int FirstAdj(int i)
   {
   int j=0;
   while(j    {j++;}
   if(j    return j;
   else
   return -1;
   } 
   int SecondAdj(int iint k)//顶点下标为i的顶点相对于k的下一个顶点k为i的当前邻接顶点二者都是顶点下标
   {
   int j=k+1;
   while(j    {j++;}
   if(j    return j;
   else
   return -1;
   }
   void DFS(int v)
   {
   int w;visited[v]=1;cout<    for(w=FirstAdj(v);w>=0;w=SecondAdj(vw))
   {
   if(!visited[w])
   {DFS(w);}
   }
   }
   void BFS(int v)
   {
   int uw;;
     queue q1;
   if(!visited[v])
   {
   visited[v]=1;cout<    q1.push(v);
   while(!q1.empty())
   {
   u=q1.front();
   q1.pop();
   for(w=FirstAdj(v);w>=0;w=SecondAdj(vw))
   {
   if(!visited[w])  
 

评论

共有 条评论