当前位置:
文档之家› 邻接矩阵遍历图,求某顶点的度
邻接矩阵遍历图,求某顶点的度
{
v=Q[++front];//将顶点v出队列
for(int j=0;j<vertexNum;j++)
{
if(arc[v][j]==1&&visited[j]==0)
{
cout<<vertex[j]<<"\t";
visited[j]=1;
Q[++rear]=j;
}//第一次错在此处
}
//for(int j=0;j<vertexNum;j++)
{
count++;
}
}
return count;
}
template<class T>
MGraph<T>::MGraph(T a[],int n,int e)
{
int i,j;
vertexNum=n;
arcNum=e;
for( i=0;i<vertexNum;i++)
vertex[i]=a[i];
for(i=0;i<vertexNum;i++)
MGraph<char> x(a,4,5);
for(int i=0;i<MaxSize;i++)
visited[i]=0;
cout<<"深度优先遍历"<<endl;
x.DFSTraverse(0);
cout<<endl;
for(int i=0;i<MaxSize;i++)
visited[i]=0;
cout<<"广度优先遍历"<<endl;
void MGraph<T>::DFSTraverse(int v)
{
cout<<vertex[v]<<"\t";
visited[v]=1;
for(int j=0;j<vertexNum;j++)
{
if(arc[v][j]==1&&visited[j]==0)
DFSTraverse(j);
}
}
template<class T>
int arc[MaxSize][MaxSize];//盛放边的关系的二维数组,有关系输出1
int vertexNum;//顶点数
int arcNum;//边数
public:
MGraph(T a[],int n,int e);//构造函数,构造一个n个顶点,e条边的图
void DFSTraverse(int v);//深度优先遍历图
x.BFSTraverse(0);
cout<<endl;
cout<<"请输入你想要查询的度的顶点,'V0'为第0个顶点,'V1'为第1个顶点,'V2','V3'"<<endl;
int i;
cin>>i;
cout<<x.Du(i);
}
//{
//if(arc[v][j]==1&&visited[j]==0)
//cout<<vertex[j]<<"\t";
//visited[j]=1;
//Q[++rear]=j;
//}
}
}
int visited[MaxSize]={0};
void main()
{
char a[]={'V0','V1','V2','V3'};
void MGraph<T>::BFSTrrtex[v]<<"\t";
visited[v]=1;
int Q[MaxSize];//建立一个队列
int front=-1;
int rear=-1;
Q[++rear]=v;//将顶点v进队列
while(front!=rear)
void BFSTraverse(int v);//广度优先遍历图
int Du(int i);//查询某个顶点的度
};
template<class T>
int MGraph<T>::Du(int i)
{
int count=0;
for(int j=0;j<vertexNum;j++)
{
if(arc[i][j]==1)
for (j=0;j<vertexNum;j++)
arc[i][j]=0;
for(int k=0;k<arcNum;k++)
{
//cin>>i>>j;有问题吗?没有问题
cout<<"请输入两个顶点的序号"<<endl;
cin>>i;
cin>>j;
arc[i][j]=1;
arc[j][i]=1;
}
}
template<class T>
//附带错误提示处
#include <iostream>
using namespace std;
const int MaxSize=10;
template<class T>
class MGraph
{
private:
T vertex[MaxSize];//盛放顶点的信息的一维数组,如"v0","v1","v2"