图的遍历方法以及邻接矩阵c++

1.图的深度优先遍历

template<typename DataType>
void MGraph<DataType>::DFTraverse(int v)
{
    
    
    cout<<vertex[v];visited[v]=1;
    for(int j=0;j<vertexNum;j++)
       if(edge[v][j]==1 && visited[j]==0) DFTraverse(j);
}

2.图的广度优先遍历

template<typename DataType>
void MGraph<DataType>::BFTraverse(int v)
{
    
    
   int w,j,Q[MaxSize];
   int front=-1,rear=-1;
   cout<<vertex[v];visited[v]=1;
   Q[++rear]=v;
   while(font!=rear)
   {
    
    
      w=Q[++front];
      for(j=0;j<vertexNum;j++)
          if(edge[w][j]==1 && visited[j]==0)
          {
    
    
             cout<<<vertex[j];visited[j]=1;Q[++rear]=j;
          }
    }
}

3.邻接矩阵的使用

#include<iostream>
using namespace std;
int visited[MaxSize]={
    
    0};

int main()
{
    
    
   int i;
   char ch[]={
    
    'A','B','C','D','E'};
   MGraph<char> MG{
    
    ch,5,6};
   for(i=0;i<MaxSize;i++)
       visited[i]=0;
   cout<<"深度优先遍历的序列是:";
   MG.DFTraverse(0);
   for(i=0;i<MaxSize;i++)
       visited[i]=0;
   cout<<"广度优先遍历的序列是:";
   MG.DFTraverse(0);
   return 0;
}    

猜你喜欢

转载自blog.csdn.net/qq_51344334/article/details/119970098