- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
火车路线查询最短路径数据结构C.doc
includeiostream
#include string
includeiomanip
using namespace std;
const int MAXVertices = 20;
const int MAXweight = 6000;
struct Vertex
{
string city;
};
class Graph
{
public:
/*录入信
/*录入信
/*添加信
/*修改信
八删除信
/*显示信
/*单个最短
/*所有最短
void input();
息、*/
void add();
息、*/
void change();
息*/
void del();
息*/
void show();
息*/
void select_pathl();
路程查询*/
void select_path2();
路程查询勺
private:
int Edge[M AX Vertices] [MAXVertices];
int numE,numV;
Vertex VerticesfM AX Vertices];
};
Graph: :Graph()/*构造函数初始化*/
{
for(int i=O;iMAXVertices;i++) Vertices[i].city=O;
for(i=0;iMAXVertices;i++) for(int j=O;jMAXVertices;j++)
{
if(i==j)
Edge[i][j]=O;
else
Edgefi] [j]=M AX weight;
numE=O; numV=O;
void Graph::input()/*录入信息*/
int i;
int vi;
int vj;
int 1;
cout?输入路径的条数:”; cin? numE;
COUt?H输入站点个数:”; cin?numV;
cout?输入站点名称:?endl;
for(i=0;inumV;i++)
{
cout?i+lvv:;
cin?Verticesfi].city;
for(i=0;inumE;i++)
{
cout?H输入站点i到站点j的路径的长度(i,j:站点前的序号):H?endl;
cout?站点 i:
cin?vi;
cout?站点j:
cin?vj;
cout?n路径长度(千米):”;
cin?l;
Edge[vi-l][vj-l]=l;
Edge[vj-l][vi-l]=l;
}
cout?录入完成 M?endl;
}
void Graph::add()/*添加信息*/
int i; int vi; int vj; inti;
int x,y;
cout?输入添加的路径的条数:”;
cin?x;
coutVV 输入添加的站点个数:”;
cin?y;
cout?n输入添加站点名称:” ?endl;
for(i=0;iy;i++)
{
cout?numV+i+1 vv ” : ” ; cin?Vertices[numV+i].city; cout?H 添加成功!M?endl;
}
for(i=0;ix;i++)
{
coutvv“输入站点i到站点j的路径的长度(i,j:站点前的序号):,r?endl; cout?站点 i: ”; cin?vi;
cout?站点j: ”;
cin?vj;
cout?n路径长度(千米):”;
cin?l;
Edge[vi-1 ] [vj-11=1;
Edge[vj-l][vi-l]=l;
cout?添加成功! H?endl;
}
numE=x+numE;
numV=y+numV;
}
void Graph::change()/*修改信息*/
{
string a;
string c;
int b=0;
char e;
char d;
int x;
inty;
int f;
cout?H是否修改站点名字(Y/N)M?endl;
cin?e;
if(e==,y,)
{
cout?n所有站点的名字:M?endl;
for(int q=0;qnumV;q++)
cout?setw(4)?q+l?,l.,,Vertices[q].city;
}
cout?endl;
cout?n请输入要修改的站点名字:”;
cin?a;
for(int i=O;inumV;i++)
if(Vertices[i].city==a)
{
cout?n请重新输入站点名字:”;
cin?c;
Verticesfi].city=c;
b++;
cout?修改成功!?endl;
}
if(b=O)
cout?不存在该站点! vvendl;
}
cout?H是否修改站点距离(Y/N)M?endl;
cin?d;
if(d=y)
{
cout?n请输入要修改路线的站点序号vi:”;
cin?x;
cout
文档评论(0)