| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1322 人关注过本帖
标题:[求助]实现一个区域交通指南图
取消只看楼主 加入收藏
e4lich
Rank: 2
等 级:新手上路
威 望:4
帖 子:182
专家分:0
注 册:2006-10-26
收藏
 问题点数:0 回复次数:3 
[求助]实现一个区域交通指南图
区域交通指南图
可用一个带权有向图表示某一区域的公交线路网,图中顶点表示区域内的重要场所,有向边表示已有的
公交线路,边上的权表示票价,要求:
1)用邻接矩阵作为图的存储结构;
2)能计算输入起点到所有其他顶点的最短路径及票价。
上面是题目,斑竹可以给个构思我吗?不知从何做起!所谓的有向边是单向的还是双向的?
搜索更多相关主题的帖子: 指南 区域 交通 
2006-12-15 14:01
e4lich
Rank: 2
等 级:新手上路
威 望:4
帖 子:182
专家分:0
注 册:2006-10-26
收藏
得分:0 

好思路,谢谢斑竹啦,不明再问吧.


我只想变强!     
2006-12-15 20:26
e4lich
Rank: 2
等 级:新手上路
威 望:4
帖 子:182
专家分:0
注 册:2006-10-26
收藏
得分:0 

求救::::
#define maxvex 100
#define max 32767
struct vertex
{int num;
char data;
}vertex;
typedef struct adjmax
{struct vertex vexs[maxvex];
int edges[maxvex][maxvex];
}adjmax;

adjmax creategraph(int n,int e)
{int i,j,k,w;
char b,t;
adjmax adj;
for(i=0;i<n;i++)
{printf("\tthe %d vertex's massege is:",i);
scanf("%c",&adj.vexs[i].data);
adj.vexs[i].num=i;
}
for(i=0;i<n;j++)
for(j=0;j<n;j++)
adj.edges[i][j]=0;
for(k=0;k<e;k++)
{
printf("input the %d edge's jumping-off point, the end-point and the dist",k);
scanf("%c,%c,%d",&b,&t,&w);
i=0;
while(i<n && adj.vexs[i].data!=t) i++;
if(i>=n)
{printf("input the jumping-off point is inexistent.\n");
exit(0);
}
j=0;
while(j<n && adj.vexs[j].data!=t) j++;
if(j>=n)
{printf("input the end point is inexistent.\n");
exit(1);
}
adj.edges[i][j]=w;
}return(adj);
}


void shortpath(cost,dist,path,n,v0)
int cost[maxvex][maxvex],dist[maxvex],path[maxvex],n,v0;
{int s[maxvex],u,vnum,w,wm;
for(w=1;w<n;w++)
{dist[w]=cost[v0][w];
if(cost[v0][w]<max)path[w]=v0;
}
for(w=1;w<=n;w++) s[w]=0;
s[v0]=1;
vnum=1;
while(vnum<n-1)
{wm=max;
u=v0;
for(w=1;w<=n;w++)
if(s[w]==0 && dist[w]<wm)
{u=w;wm=dist[w];
}
s[u]=1;vnum++;
for(w=1;w<=n;w++)
if(s[w]==0 && dist[u]+cost[u][w]<dist[w])
{dist[w]=dist[u]+cost[u][w];
path[w]=u;}
}
}

void printpath(dist,path,s,n,v0)
int dist[maxvex],path[maxvex],s[maxvex],n,v0;
{int i,k;
for(i=1;i<=n;i++)
if(s[i]==1)
{k=i;
while(k!=v0)
{printf("%d←",k);
k=path[k];
}
printf("%d",k);
printf("%d",dist[i]);
}
else
{printf("%d←%d",i,v0);
printf("∞");
}
}
main()
{adjmax g;
int n,e,v0;
int dist[maxvex],path[maxvex],s[maxvex];
printf("input the No. of vertex(n) and the No. of edges(e):");
scanf("%d,%d",&n,&e);
g=creategraph(n,e);
printf("input the headspring is: ");
scanf("%d",&v0);
shortpath(g.edges[][],dist[],path[],g.vexs[],v0);
printpath(g.edges[][],path[],s[],g.vexs[],v0);
}
我的程序是这样的,但是后两行错误啊,可以帮我看看吗?


我只想变强!     
2006-12-18 18:05
e4lich
Rank: 2
等 级:新手上路
威 望:4
帖 子:182
专家分:0
注 册:2006-10-26
收藏
得分:0 

恩恩,好的,谢谢啦,剩下的交给我吧,


我只想变强!     
2006-12-20 18:50
快速回复:[求助]实现一个区域交通指南图
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025733 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved