数据结构实验报告-交通指南

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

班级:计嵌141

姓名:陈志远学号:1413052023

交通指南系统

1.问题描述

假设以一个带权有向图表示某一区域的公交线路图,图中顶点代表一些区域中的重要站点,弧代表已有的公交线路,弧上的权表示该线路上的票价(或搭乘所需时间),试设计一个交通指南系统,指导前来咨询者以最低的票价或最少的时间从区域中的某一站点到达另一站点。

2.基本要求

(1)设计结点和图的存储结构;

(2)设计任意两点最短路径方法;

(3)输入:图的相关信息以建立公交线路网,以及公交线路网咨询的任意两个站点;(4)输出:两个站点间一条最短的简单路径。

3.实现提示

(1)结点和图的存储结构

typedef struct node

{ int no;

float wgt;

struct node*next;

}edgenode;

typedef struct

{ char vtx;

edgenode*link;

} vexnode;

typedef vexnode Graph[n];

void Floyd(Graph G,float A[n][n],int p[n][n])

{ int i,j,k;

for(i=0;i

fot(j=0;j

{ A[i][j]=G[i][j];

P[i][j]=-1;

}

for(k=0;k

for(i=0;i

for(j=0;j

if(A[i][k]+A[k][j]

{ p[i][j]=k;

A[i][j]=A[i][k]+A[k][j];

}

}

(2)算法提示

采用任意两点最短路径的相关算法。

4.源代码

#include

using namespace std;

struct ArcCell

{

int adj; //存放弧长

bool *info; //是否用过该弧

};

struct _MGraph

{

char vexs[20]; //存放站点

ArcCell arcs[20][20]; //

int vexnum;

int arcnum;

};

typedef int Path[20][20][20];

typedef int Distanc[20][20];

class MGraph //没用私有成员

{

public:

_MGraph mgraph;//

void DestroyGraph(); //析构函数销毁图

int LocateVex (char u); // 返回顶点在图中的位置bool CreateDN(); //构造有向网

void ShortestPath_FLOYD(Path &P,Distanc &D);

};

bool MGraph::CreateDN()//构造有向网

{

int i,j ,w;

char v1, v2;

cout<<"请输入站点个数,直接可达线路的条数: ";

cin>>mgraph.vexnum>>mgraph.arcnum ;

cout<<"\n请输入各站点名: ";

for(i = 0;i

{

cin>>mgraph.vexs[i];

}

for(i = 0;i

{

for(j = 0;j

{

if(i==j)

mgraph.arcs[i][j].adj = 0;

else

mgraph.arcs[i][j].adj = 20000; //infinity;

mgraph.arcs[i][j].info = false;

}

}

for(i = 0;i

{

cout<<"\n请输入其中一条线路的起点站点名,终点站点名,需要时间(分钟): ";

cin>>v1>>v2>>w;

int m = LocateVex(v1);

int n = LocateVex(v2);

mgraph.arcs[m][n].adj = w; // 的权值}

return true;

}

void MGraph::DestroyGraph()

{

for(int i = 0 ;i

for(int j = 0;j

{

if(mgraph.arcs[i][j].info)

{

delete []mgraph.arcs[i][j].info;

mgraph.arcs[i][j].info = false;

}

}

mgraph.vexnum = 0;

mgraph.arcnum = 0;

}

相关文档
最新文档