来源:互联网 发布:java的23种设计模式 编辑:程序博客网 时间:2024/05/02 18:09
#ifndef MGraph_H  //避免包含MGraph.h头文件#define MGragh_Hconst int MaxSize=10;//图中最多顶点个数template<class DataType>//以下是类MGraph的声明class MGraph{public:MGraph(DataType a[],int n int e);构造函数,建立具有n个顶点e条边的图~MGraph(){}   //析构函数为空void DFStraverse(int V);  //深度优先遍历图void BFASTraverse(int v);  //广度优先遍历图private:DataType Vertex[MaxSize];   //存放图中顶点的数组int arc[MaxSize][MaxSize];  //存放图中边的数组int verterNum,arcNum;        //图的顶点数和边数};#endif#include<iostream>using namespace std;#include"MGraph.h" template<class DataType>MGrahph<DataType>::MGraph(DataType a[],int n,int e){int i,j,k;vertexNum=n;arcNum=e;for(i=0;i<vertexnum;j++)arc[i][j]=0;for(j=0;j<vertexNum;j++)arc[i][j]=0;for(k=0;k<arcNum;k++){cout<<"请输入边的两个顶点的序号:";cin>>i>>j;arc[i][j]=1;arc[j][i]=1;}}template<class DataType>void MGraph<DataType>::DFSTraverse(int v){cout<<vertex[v];visited[v]=1;for(int j=0;j<vertexNum;j++)if(arc[v][j]==1$$visitde[j]==0)DFSTraverse(j);}template<class DataType>void MGraph<DayaType>::BFSTraverse(int v){int Q[Maxsize];int front=-1,rear=-1;cout<<vertex[v];visited[v]=1;Q[++rear]=v;while(front!=rear){v=Q[++front];for(int j=0;j<vertexNHum;j++)if(arc[v][j]==1&&visited[j]==0){cout<<vertex[j];visited[j]=1;Q[++rear]=j;}}}#include<iostream>using namespace std;#include"MGraph.cpp"int visited[MaxSize]={0};int main(){char ch[]={'A','B','C','D','E'};MGraph<cghar>MG(ch,5,6);for(int i=0;i<MaxSize;i++)visited[i]=0;cout<<"深度优先遍历序列是:";MG.DESTraverse(0);cout<<endl;for(i=0;i<MaxSize;i++)visited[i]=0;cout<<"广度优先遍历序列是:";MG.BFSTraverse(0);cout<<endl;return 0;}

0 0
原创粉丝点击