C++数据结构图的深度遍历

#include<iostream> 

#include<queue> 

using namespace std; 

const int MaxLen=20; 

bool Visit[MaxLen]; //记录节点是否被访问

int Matrix[MaxLen][MaxLen];//邻接矩阵 

int Vexnum;//记录节点的数量 

void DFS(int v) 

        int w,i,k; 

        Visit[v]=true; 

        cout<<v<<‘ ‘; 

        int* AdjVex=new int[Vexnum];//记录当前节点的相邻的节点 

        for(i=0;i<Vexnum;i++) 

            AdjVex[i]=-1; 

        k=0; 

        for(i=0;i<Vexnum;i++) 

        if(Matrix[v][i]==1) 

        { 

            AdjVex[k++]=i; 

        } 

        w=AdjVex[i=0]; 

        while(w!=-1) 

        { 

            if(!Visit[w]) 

                DFS(w);  

            w=AdjVex[++i]; 

        } 

void SetMatirx(int vnum,int mx[MaxLen][MaxLen]) //初始化邻接矩阵,节点数量,以及记录节点是否被访问的数组

        int i,j; 

Vexnum=vnum;

        for(i=0;i<vnum;i++) 

{

Visit[i]=false;

            for(j=0;j<vnum;j++) 

{

                Matrix[i][j]=mx[i][j];  

}

}

   DFS(0); 

cout<<endl;

int main() 

    int t,n; 

    cin>>t; 

    int i,j,ma[20][20]; 

    while(t–) 

    { 

    cin>>n; 

    for(i=0;i<n;i++) 

        for(j=0;j<n;j++) 

            cin>>ma[i][j]; 

     SetMatirx(n,ma); 

    } 

    return 0; 

    原文作者:数据结构之图
    原文地址: https://blog.csdn.net/MF18211547635/article/details/50403547
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞