C++数据结构--图:邻接矩阵

测试代码

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


template<class datatype>
class mgraph{

	public:
      



		mgraph(datatype a[],int n, int e){
		
			vertexnum=n;
			arcnum=e;
			int i;
			int j;
			int k;
			for(i=0;i<vertexnum;i++)
				vertex[i]=a[i];
			for(i=0;i<vertexnum;i++)
		       for(j=0;j<vertexnum;j++)
				   arc[i][j]=0;


			   cout<<"输入邻接矩阵为1的点的坐标:"<<endl;
			  for(k=0;k<arcnum;k++)
			  {
				  cout<<"第"<<k+1<<"个:"<<endl;
			  cin>>i>>j;
			  arc[i][j]=1;
			  arc[j][i]=1;
			 
			  }
		
		   
		}
		void xuzhao(){
		
		 int start;
		 int final;
		 int v;
		 int i;
		 cout<<"请输入起点:";
		 cin>>start;
		 cout<<"请输入终点:";
		 cin>>final;
		 for(i=0;i<vertexnum;i++)
			 if(vertex[i]==start)
				 v=i;

			 int visit[maxsize]={0};
		int data[20];
		int front=-1;
		int rear=-1;
		int j;
		int flag=1;
	//	cout<<vertex[v];
		visit[v]=1;
		data[++rear]=v;
		while(front!=rear&&flag==1)
		{
		
			v=data[++front];
			for(j=0;j<vertexnum;j++)
		
				if(arc[v][j]==1&&visit[j]==0)
				{
				//cout<<vertex[j];
					if(vertex[j]==final)
					{
						cout<<"存在!"<<endl;
						flag=0;
					break;}
				visit[j]=1;
				data[++rear]=j;
				
				}
				
		}



		
		
		if(flag==1)
			cout<<"不存在!"<<endl;
		
		}
		~mgraph(){}

		void dfst(int v){
		int j;
		cout<<vertex[v];
	    visited[v]=1;
		for(j=0;j<vertexnum;j++)

			if(arc[v][j]==1&&visited[j]==0)
				dfst(j);
		}
		void bfst(int v){
			int visit[maxsize]={0};
		int data[20];
		int front=-1;
		int rear=-1;
		int j;
		cout<<vertex[v];
		visit[v]=1;
		data[++rear]=v;
		while(front!=rear)
		{
		
			v=data[++front];
			for(j=0;j<vertexnum;j++)
		
				if(arc[v][j]==1&&visit[j]==0)
				{
				
				cout<<vertex[j];
				visit[j]=1;
				data[++rear]=j;
				
				}
		}

		
		
		
		}
	private:
         datatype vertex[maxsize];
		 int arc[maxsize][maxsize];
		 int vertexnum,arcnum;

};

int main()
{
    
	int vertex[4]={1,2,3,4};
     
	mgraph<int>   a(vertex,4,4);
//	a.tu();
	cout<<"深度优先遍历算法:";
	a.dfst(0);
	cout<<endl;
cout<<"广度优先算法:";
  a.bfst(0);
  cout<<endl;
  a.xuzhao();


return 0;
}

测试结果

在这里插入图片描述

发布了218 篇原创文章 · 获赞 523 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/weixin_44225182/article/details/105372450