图的D搜索类似于BFS,不同之处在于使用栈代替BFS中的队列,入/出队列的操作作为入/出栈的操作,即当一个顶点的所有邻接结点被搜索后,下一个搜索出发点应该是最近入栈(栈顶)的顶点。 (1)用邻接表作为存储结构,写一个D搜索算法; (2)用D搜索方法

admin2012-06-21  93

问题 图的D搜索类似于BFS,不同之处在于使用栈代替BFS中的队列,入/出队列的操作作为入/出栈的操作,即当一个顶点的所有邻接结点被搜索后,下一个搜索出发点应该是最近入栈(栈顶)的顶点。
  (1)用邻接表作为存储结构,写一个D搜索算法;
  (2)用D搜索方法搜索下图,设初始出发的结点为1,写出顶点的访问次序,当从某顶点出发搜索它的邻接点时,请按邻接点序号递增顺序搜索,以使答案唯一。

选项

答案(1)void D_Traverse(Graph G) { int i,v; ArcNode*arc; Stack S: int visited[vexnum]; for(i=0;i<vexnum;i++) visited[i]=0; InitStack(S); for(i=0;i<vexnum;i++) { if(!visited[i])//如果结点i未访问 { push(S,i);//结点i入栈 while(!StackEmpty(S))// { pop(S,v); visited[v]=1; Visit(v);//出栈,将栈顶元素赋值给v for(arc=G[i].firstarc;arc!=NULL;arc=arc->nextarc) { if(!visited[arc->adjvex])//对于结点v的所有邻接结点,若未访问,就 入栈 { push(S,arc->adjvex); visited[v]=1; } } } } } } (2)访问的顺序为:1432765

解析
转载请注明原文地址:https://jikaoti.com/ti/3EajFFFM
0

最新回复(0)