您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 邻接矩阵遍历图,求某顶点的度
//附带错误提示处#includeiostreamusingnamespacestd;constintMaxSize=10;templateclassTclassMGraph{private:Tvertex[MaxSize];//盛放顶点的信息的一维数组,如v0,v1,v2intarc[MaxSize][MaxSize];//盛放边的关系的二维数组,有关系输出1intvertexNum;//顶点数intarcNum;//边数public:MGraph(Ta[],intn,inte);//构造函数,构造一个n个顶点,e条边的图voidDFSTraverse(intv);//深度优先遍历图voidBFSTraverse(intv);//广度优先遍历图intDu(inti);//查询某个顶点的度};templateclassTintMGraphT::Du(inti){intcount=0;for(intj=0;jvertexNum;j++){if(arc[i][j]==1){count++;}}returncount;}templateclassTMGraphT::MGraph(Ta[],intn,inte){inti,j;vertexNum=n;arcNum=e;for(i=0;ivertexNum;i++)vertex[i]=a[i];for(i=0;ivertexNum;i++)for(j=0;jvertexNum;j++)arc[i][j]=0;for(intk=0;karcNum;k++){//cinij;有问题吗?没有问题cout请输入两个顶点的序号endl;cini;cinj;arc[i][j]=1;arc[j][i]=1;}}templateclassTvoidMGraphT::DFSTraverse(intv){coutvertex[v]\t;visited[v]=1;for(intj=0;jvertexNum;j++){if(arc[v][j]==1&&visited[j]==0)DFSTraverse(j);}}templateclassTvoidMGraphT::BFSTraverse(intv){coutvertex[v]\t;visited[v]=1;intQ[MaxSize];//建立一个队列intfront=-1;intrear=-1;Q[++rear]=v;//将顶点v进队列while(front!=rear){v=Q[++front];//将顶点v出队列for(intj=0;jvertexNum;j++){if(arc[v][j]==1&&visited[j]==0){coutvertex[j]\t;visited[j]=1;Q[++rear]=j;}//第一次错在此处}//for(intj=0;jvertexNum;j++)//{//if(arc[v][j]==1&&visited[j]==0)//coutvertex[j]\t;//visited[j]=1;//Q[++rear]=j;//}}}intvisited[MaxSize]={0};voidmain(){chara[]={'V0','V1','V2','V3'};MGraphcharx(a,4,5);for(inti=0;iMaxSize;i++)visited[i]=0;cout深度优先遍历endl;x.DFSTraverse(0);coutendl;for(inti=0;iMaxSize;i++)visited[i]=0;cout广度优先遍历endl;x.BFSTraverse(0);coutendl;cout请输入你想要查询的度的顶点,'V0'为第0个顶点,'V1'为第1个顶点,'V2','V3'endl;inti;cini;coutx.Du(i);}
本文标题:邻接矩阵遍历图,求某顶点的度
链接地址:https://www.777doc.com/doc-2011187 .html