typedef struct _BinaryTreeNode
{
char data;
//int ltag , rtag;
struct _BinaryTreeNode *lchild;
struct _BinaryTreeNode *rchild;
}BTNode;
/创建邻接矩阵 假定这里是有向图
void createMGraph(AGraph *a)
{
// int i;
// int start;
// int end;
cout<<"请输入顶点的数目和边的数目"<<endl;
cin>>a->n>>a->e;
cout<<"请输入顶点的值"<<endl;
for (int i =0;i<a->n;i++ )
{
cin>>a->adjlist[i].data;
a->adjlist[i].firstarc =NULL;
}
//创建邻接矩阵
cout<<"请输入边:起始顶点start和终止顶点 end"<<endl;
for (int i =0;i< a->e; i++)
{
int start,end;
cin>>start>>end;
ArcNode *e;//弧
e= new ArcNode ;
e->adjvex =end;
e->nextarc = a->adjlist[start].firstarc;
a->adjlist[start].firstarc = e;
}
}
void BFSTraverse(AGraph *a,int v)
{
//存的是顶点
queue<int> q;
if (visit[v]==1)
{
return;
}
visit[v] = 1;
ArcNode *p ;
cout << a->adjlist[v].data<<endl;
while(!q.empty())
{
p = a->adjlist[q.front()].firstarc;
q.pop();
while(p!=NULL)
{
if (visit[p->adjvex]==0)
{
visit[p->adjvex] = 1;
cout<< a->adjlist[p->adjvex].data<<endl;
q.push(p->