邻接矩阵建立无向图

#include<iostream>
using namespace std;
const int MaxSize=10;
class MGraph
{public:
MGraph(int n,int e){vertexNum=n;arcNum=e;
for(int i=0;i<vertexNum;i++){cout<<"请输入第"<<i<<"个顶点数据:";int x;cin>>x;vertex[i]=x;visited1[i]=0;visited2[i]=0;}
for(int z=0;z<vertexNum;z++)
 for(int j=0;j<vertexNum;j++)
  arc[z][j]=0;
  for(int k=0;k<arcNum;k++)
  {int a,b;cout<<"请输入边"<<k<<"依附的两个顶点:";cout<<"第一个顶点:";cin>>a;cout<<"第二个顶点:";cin>>b;arc[a][b]=1;arc[b][a]=1;}}
void DFSTraverse(int v){cout<<vertex[v];visited1[v]=1;
for(int j=0;j<vertexNum;j++)if(arc[v][j]==1&&visited1[j]==0)DFSTraverse(j);}

void BFSTraverse(int v){int Q[MaxSize];int front,rear;front=rear=-1;cout<<vertex[v];visited2[v]=1;Q[++rear]=v;
while(front!=rear){v=Q[++front];for(int j=0;j<vertexNum;j++)
if(arc[v][j]==1&&visited2[j]==0){cout<<vertex[j];visited2[j]=1;Q[++rear]=j;}}}
private:
	int vertex[MaxSize];
	int arc[MaxSize][MaxSize];
	int visited1[MaxSize];int visited2[MaxSize];
	int vertexNum,arcNum;
};
int main()
{cout<<"顶点数:";int a;cin>>a;
cout<<"边数:";int b;cin>>b;
MGraph M(a,b);
cout<<"深度优先遍历:";cout<<"选择第一个访问的顶点:";int top1;cin>>top1;M.DFSTraverse(top1);cout<<endl;
cout<<"广度优先遍历:";cout<<"选择第一个访问的顶点:";int top2;cin>>top2;M.BFSTraverse(top2);cout<<endl;
return 0;}


猜你喜欢

转载自blog.csdn.net/guangnianaaa/article/details/80456453
今日推荐