第12周项目4 - 利用遍历思想求解图问题(7)
2016-11-17 11:09
197 查看
问题及代码:
/*
* Copyright (c)2016,烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp
* 作 者:何大冰
* 完成日期:2016年11月17日
* 版 本 号:v1.0
* 问题描述:求不带权连通图G中,距离顶点v最远的顶点k
*/
#include <stdio.h>
#include <malloc.h>
#include "graph.h"
int Maxdist(ALGraph *G,int v)
{
ArcNode *p;
int i,j,k;
int Qu[MAXV]; //环形队列
int visited[MAXV]; //访问标记数组
int front=0,rear=0; //队列的头、尾指针
for (i=0; i<G->n; i++) //初始化访问标志数组
visited[i]=0;
rear++;
Qu[rear]=v; //顶点v进队
visited[v]=1; //标记v已访问
while (rear!=front)
{
front=(front+1)%MAXV;
k=Qu[front]; //顶点k出队
p=G->adjlist[k].firstarc; //找第一个邻接点
while (p!=NULL) //所有未访问过的相邻点进队
{
j=p->adjvex; //邻接点为顶点j
if (visited[j]==0) //若j未访问过
{
visited[j]=1;
rear=(rear+1)%MAXV;
Qu[rear]=j; //进队
}
p=p->nextarc; //找下一个邻接点
}
}
return k;
}
int main()
{
ALGraph *G;
int A[9][9]=
{
{0,1,1,0,0,0,0,0,0},
{0,0,0,1,1,0,0,0,0},
{0,0,0,0,1,1,0,0,0},
{0,0,0,0,0,0,1,0,0},
{0,0,0,0,0,1,1,0,0},
{0,0,0,0,0,0,0,1,0},
{0,0,0,0,0,0,0,1,1},
{0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,0}
}; //请画出对应的有向图
ArrayToList(A[0], 9, G);
printf("离顶点0最远的顶点:%d",Maxdist(G,0));
return 0;
}
运行结果:
知识点总结:
求不带权连通图中距离顶点最远的顶点。
心得体会:
利用遍历思想解决最远顶点问题。
/*
* Copyright (c)2016,烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp
* 作 者:何大冰
* 完成日期:2016年11月17日
* 版 本 号:v1.0
* 问题描述:求不带权连通图G中,距离顶点v最远的顶点k
*/
#include <stdio.h>
#include <malloc.h>
#include "graph.h"
int Maxdist(ALGraph *G,int v)
{
ArcNode *p;
int i,j,k;
int Qu[MAXV]; //环形队列
int visited[MAXV]; //访问标记数组
int front=0,rear=0; //队列的头、尾指针
for (i=0; i<G->n; i++) //初始化访问标志数组
visited[i]=0;
rear++;
Qu[rear]=v; //顶点v进队
visited[v]=1; //标记v已访问
while (rear!=front)
{
front=(front+1)%MAXV;
k=Qu[front]; //顶点k出队
p=G->adjlist[k].firstarc; //找第一个邻接点
while (p!=NULL) //所有未访问过的相邻点进队
{
j=p->adjvex; //邻接点为顶点j
if (visited[j]==0) //若j未访问过
{
visited[j]=1;
rear=(rear+1)%MAXV;
Qu[rear]=j; //进队
}
p=p->nextarc; //找下一个邻接点
}
}
return k;
}
int main()
{
ALGraph *G;
int A[9][9]=
{
{0,1,1,0,0,0,0,0,0},
{0,0,0,1,1,0,0,0,0},
{0,0,0,0,1,1,0,0,0},
{0,0,0,0,0,0,1,0,0},
{0,0,0,0,0,1,1,0,0},
{0,0,0,0,0,0,0,1,0},
{0,0,0,0,0,0,0,1,1},
{0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,0}
}; //请画出对应的有向图
ArrayToList(A[0], 9, G);
printf("离顶点0最远的顶点:%d",Maxdist(G,0));
return 0;
}
运行结果:
知识点总结:
求不带权连通图中距离顶点最远的顶点。
心得体会:
利用遍历思想解决最远顶点问题。
相关文章推荐
- 第12周上机实践项目4 - 利用遍历思想求解图问题(1-4)
- 第12周项目4-利用遍历思想求解图问题
- 第12周项目4 - 利用遍历思想求解图问题(1)
- 第12周项目4 - 利用遍历思想求解图问题(3)
- 【第12周 项目4 - 利用遍历思想求解图问题(6-7)】
- 第12周项目4 -利用遍历思想求解图问题(1)
- 第12周项目4 - 利用遍历思想求解图问题(4)
- 第12周项目4利用遍历思想求解图问题1
- 第12周项目4 利用遍历思想求解图问题(1--5)
- 第12周项目4-利用遍历思想求解图问题(2)
- 第12周项目4利用遍历思想求解图问题2
- 【第12周 项目4 - 利用遍历思想求解图问题(1-5)】
- 第12周项目4利用遍历思想求解图问题(6-7)
- 第12周项目4-利用遍历思想求解图问题(3)
- 第12周 项目4 - 利用遍历思想求解图问题 (6-7)
- 第12周、项目4 ㈠—利用遍历思想求解图问题
- 第12周、项目4 ㈡—利用遍历思想求解图问题
- 【第12周 项目4 - 利用遍历思想求解图问题(1-5)】
- 第12周项目4 利用遍历思想求解图问题
- 第12周项目4利用遍历思想求解图问题5