【正确答案】本题直接将BFS算法中的队列改为栈即可,程序代码如下:
void bfs1(graph g,int V)
{
int stack[Vnum],top=-1;
int visited[Vnum],i;
arcnode *p;
for(i=0;i<Vnum;++i) //赋初值
visited[i]=0;
visit(v); //假设此函数已经定义,表示对v结点的访问操作
visited[v]=1;
++top;
stack[top]=v;
while(top>=0)
{
v=stack[top];
--top;
p=g.adjlist[v].firstarc;
while(p!=NULL)
{
if(!visited[p→adjvex])
{
visit(p→adjvex);//访问p
visited[p→adjvex]=1;
++top;
stack[top]=p→adjvex;
}
p=p→nextarc;
}
}
}
【答案解析】