永发信息网

图的应用

答案:2  悬赏:80  手机版
解决时间 2021-01-23 02:28
图的应用
最佳答案
//采纳吧。。。费了不少时间
#include
#include
#define MAX_VERTEX_NUM 20
bool visited[MAX_VERTEX_NUM];
typedef struct ArcNode{
int adjvex; //该边所指向的顶点的位置
struct ArcNode *nextarc; //指向下一条边的指针
}ArcNode;
typedef struct{
ArcNode * AdjList[MAX_VERTEX_NUM]; //指向第一条依附该顶点的边的指针
int vexnum, arcnum; //图的当前顶点和弧数
}Graph;
void CreateGraph(Graph &G)
{//构造邻接表结构的图G
int i;
int start,end; //记录弧尾、弧头信息,或边的两个邻接点信息
ArcNode *s;
printf("请输入图的顶点数和边数:");
scanf("%d,%d",&G.vexnum,&G.arcnum); //输入图的顶点数和边数
for(i=1;i<=G.vexnum;i++) G.AdjList[i]=NULL; //初始化指针数组
printf("请输入各边, 格式:顶点,顶点\n");
for(i=1;i<=G.arcnum;i++)
{scanf("%d,%d",&start,&end); //输入边的起点和终点
s=(ArcNode *)malloc(sizeof(ArcNode)); //生成一个边结点
s->nextarc=G.AdjList[start]; //插入到邻接表中,注意此处为逆向插入到单链表中
s->adjvex=end;
G.AdjList[start]=s;
//无向图,注意是对称插入结点
s=(ArcNode *)malloc(sizeof(ArcNode));
s->nextarc=G.AdjList[end];
s->adjvex=start;
G.AdjList[end]=s;
}
}
int FirstAdjVex(Graph G, int v)
{
ArcNode *p;
if(v>=1 && v<=G.vexnum)
{
p=G.AdjList[v];
if(p->nextarc==NULL)
return 0;
else
return (p->nextarc->adjvex);
}
return -1;
}
int NextAdjVex(Graph G, int v, int w)
{//在图G中寻找第v个顶点的相对于w的下一个邻接顶点
ArcNode *p;
if(v>=1 && v<=G.vexnum && w>=1 && w<=G.vexnum)
{
p=G.AdjList[v];
while(p->adjvex!=w)
p=p->nextarc; //在顶点v的弧链中找到顶点w
if(p->nextarc!=NULL)
return 0; //若已是最后一个顶点,返回0
else
return(p->nextarc->adjvex); //返回下一个邻接顶点的序号
}
return -1;
}
void DFS(Graph G, int v)
{
int i,w;
ArcNode *p;
visited[v]=1;
printf("%d ",v); //访问第v个顶点
p=G.AdjList[v];
while (p!=NULL)
{
w=p->adjvex;
if(visited[w]==0)
DFS(G,w);
p=p->nextarc;
}
}
void DFSTravel(Graph G)
{
int i,w,v=1;
ArcNode *p;
visited[v]=1;
printf("%d ",v); //访问第v个顶点
p=G.AdjList[v];
while (p!=NULL)
{
w=p->adjvex;
if(visited[w]==0)
DFS(G,w);
p=p->nextarc;
}
}
void main()
{
int i,v;
Graph G;
CreateGraph(G);
printf("请输入深度优先遍历开始点的名:");
scanf("%d",&v);
for(i=1;i<=G.vexnum;i++)
visited[i]=0;
DFS(G,v);
printf("\n");
for(i=1;i<=G.vexnum;i++)
visited[i]=0;
DFSTravel(G);
printf("\n");
}
全部回答
你们要求是什么?能不能用C++来写?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
175、180的衣服有多少厘米长
寄平信,邮局丢失信件的几率有多大?
没有感情基础,经人介绍结婚后发现严重三观不
如何在工作中体现服务责任意识
如何查京东商品的历史价格
南京新东方烹饪学校到底怎么样?(打广告的别
浅草的名所名物
主人公叫陆x川的小说女主是私生女
668怎么不能看了
com.android.phone停止运行怎么为?
公务员考试中,遇到数字推理的题目,我则么最
概括柳子后墓志铭段落大意
如图所示,电压表的示数是________.
咸阳统一广场到城北客站车及公交站
为什么我注册谷歌账户一直注册不了?
推荐资讯
广州一谦清洁服务有限公司怎么样?
齐秦与齐豫是什么关系?
生活中常常需要对一些物理量进行估测,下面估
莆田市区去火车站最晚班车几点
河南省鹅屠宰场
win7系统yy语音设置
求《猜凶》全集TXT。
单选题Doyouhave________?A.twopiecesof
已知定义在R上的函数f(x)是偶函数,对x∈R
哪些地方的牌照是渝G?
免熏蒸木方 执行什么标准?
圣颜同美容养生理疗馆地址有知道的么?有点事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?