1.设计一个算法,求无向连通图中距离顶点V最远的顶点。 假设图G采用邻接表的存储结构,利用广度优先搜索遍历算法,从V出发进行广度优先搜索,最后一层的顶点距离V最远。遍历时利
1.设计一个算法,求无向连通图中距离顶点V最远的顶点。
假设图G采用邻接表的存储结构,利用广度优先搜索遍历算法,从V出发进行广度优先搜索,最后一层的顶点距离V最远。遍历时利用队列暂存各个顶点,队列中的最后一个顶点一定在最后一层,因此只要将该顶点作为结果即可。
int maxdis(ALGraph *G,int v)
{ArcNode *p;
int Q[MAXSIZE];
int front=rear=0;
for(i=0;i<G->vexnum;i++)
visited[i]=FALSE;
rear++;
Q[rear]=v;
visited[v]=TRUE;
while(rear!=front)
{
front=(front+1)%MAXSIZE;
k=Q[front];
p=G->adjvex[k].firstarc;
while(p!=NULL)
{
j=p->adjvex;
if(visited[j]==FALSE]
{
visited[j]=TRUE;
rear=(rear+1)%MAXSIZE;
Q[rear]=j;
}
p=p->nextarc;
}
}
return k;
}