深度优先:使用栈
广度优先:使用队列
#include<iostream>
#include<stack>
#include<queue>
#define MAX_VERTS 20
using namespace std;
class Vertex
{
public:
Vertex(char lab)
{
Label = lab;
wasVisited = false;
}
bool wasVisited;
char Label;
//private:
//char Label;
};
class Graph //邻接矩阵
{
public:
Graph();
~Graph();
void addVertex(char lab);
void addEdge(int start, int end);
void printMatrix();
void showVertex(int v);
void DFS(); //深度优先
void BFS(); //广度优先
private:
Vertex* vertexList[MAX_VERTS];//数组中为指向顶点的指针
int nVerts; //顶点个数
int adjMat[MAX_VERTS][MAX_VERTS];
int getAdjUnvisitedVertex(int v); //找到v相连的下一个邻接的顶点
};
void Graph::DFS()
{
stack<int> gStack;
vertexList[0]->wasVisited = true;