图的邻接矩阵实现与深度优先遍历、广度优先

图的邻接矩阵实现与深度优先遍历、广度优先_第1张图片

重点:

1、深度优先遍历——递归

2、广度优先遍历——队列

#include
using namespace std;
const int MaxSize=10;//图中最多顶点的个数
int visited[MaxSize];
template
class Queue
{
public:
    DataType data[MaxSize];
    int front,rear;
};
template
class MGraph
{
private:
    DataType vertex[MaxSize];//存放图中顶点的数组
    int arc[MaxSize][MaxSize];//存放图中边的数组
    int vertexNum,arcNum;//图的顶点数和边数
public:
    MGraph(DataType a[],int vn,int an);//构造函数
    ~MGraph(){}
    void DFSTraverse(int v);//深度优先遍历
    void BFSTraverse(int v);//广度优先遍历
};
//构造一个图
template
MGraph::MGraph(DataType a[],int vn,int an)
{
    vertexNum=vn;
    arcNum=an;
    for(int i=0;i>i>>j;//输入边依附的两个顶点的编号
        arc[i][j]=1;//有边为1
        arc[j][i]=1;//无向图是对称矩阵
    }
}
//深度优先遍历
template
void MGraph::DFSTraverse(int v)
{

    cout<<"开始访问的顶点:"<
void MGraph::BFSTraverse(int v)
{

    Queue Q;//定义一个队列,队列类的对象
    Q.front=Q.rear=-1;//假设采用顺序队列且不会发生溢出
    cout<<"开始访问的结点:"< graph(a,5,4);
    for(int i=0;i

输出:

图的邻接矩阵实现与深度优先遍历、广度优先_第2张图片

你可能感兴趣的:(数据结构)