问答题 请设计一个图的抽象数据类型(只需要用类Pascal或类C/C++语言给出其主要功能函数或过程的接口说明,不需要指定存储结构,也不需要写出函数或过程的实现方法),利用抽象数据类型所提供的函数或过程编写图的广度优先周游算法。算法不应该涉及具体的存储结构,也不允许不通过函数或过程而直接引用图结构的数据成员,抽象数据类型和算法都应该加足够的注释。【北京大学1999二、1(10分)】
【正确答案】正确答案:这里只给出广度优先遍历的算法bfsO。 void bfs(graph g,vertype v0) //从顶点v0出发广度优先遍历图g {visit(v0);visited [v0]=1; //设顶点信息就是编号,visited是全局变量 QueueInit(Q); QueueIn(Q,v0); //v0入队列 while(!empty(Q)) {v=QueueOut(Q); //队头元素出队列 w=firstadj(g,v); //求顶点v的第一邻接点 while(w!=0) //w!=0表示w存在 {if(visited[w]==0) {visit(w);visited[w]=1;Queueln(Q,w);} //若邻接点未访问 w=nextadj(g,v,w); //求下一个邻接点 }//while }//while }//bfs
【答案解析】