一.综合分析题
1.已知图7.6、图7.7所示的无向网和有向图,请给出该图的:
(1)顶点向量和邻接矩阵;
(2)邻接表和逆邻接表;
2.请用克鲁斯卡尔和普里姆两种算法分别为图7.6构造最小生成树:
3.试列出图7.8中全部的拓扑排序序列。
4.请用图示说明图7.9从顶点a到其余各顶点之间的最短路径。
5.已知下面是某无向图的邻接表,画出该无向图,并分别给出从A出发的深度优先搜索生成序列和生成树和广度优先搜索生成序列和生成树。(注:邻接表给出时,序列是唯一的)
6. 试利用Dijkstra算法求下图中从顶点a到b的最短路径。
二.算法设计题
一个连通图采用邻接表作为存储结构,设计一个算法,实现从顶点v出发的深度优先遍历的非递归过程。
//一个联通图,采用邻接表作为存储结构,设计一个算法从顶点v出发的深度优化遍历的非递归过程
void DFS(AGraph *G,int v)
{
ArcNode *p;
ArcNode *St[40];
int top=-1,i;
for (i=0;i<G->n;i++)
visited[i]=0;
printf("%d",v);
top++;
St[top]=G->adjlist[v].firstarc;
while(top>-1)
{
p=St[top];
top--;
while(p!=NULL)
{
i=p->adjvex;
if (visited[i]==0)
{
printf("%d ",i);
visited[i]=1;
top++;
St[top]=G->adjlist[i].firstarc;
break;
}
p=p->nextarc;
}
}
}