数据结构公交换乘系统

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

数据结构程序设计课程设计

题目公交换乘系统

专业

学号

姓名

指导老师

完成日期2010年6月17日

目录

1.公车换乘流程图 (3)

2.数据储存结构 (4)

3. 程序 (4)

4.分析..................................................................................... (16)

5. 总结..................................................................................... . (18)

一、公车换乘流程图

二、数据存储结构

Ⅰ线路信息:定义在结构体中

①经过站点的所有公交路线,采用整型的1维的数组;数组长度为默认为50。

②字串符指向下一站和最后一站。

struct str //定义双重链表

{

char s[50];

str *next;

str *last;

};

Ⅱ站点信息:定义在结构体中

①经过该站点的路线条数。是一个整型变量。

②把该站作为所要求路线的第一站。

struct location//定义一个结构体来保存车站位置

{

int i;

str *first;

};

三、程序

location Find(str *pos,char *s)//查找车站位置

{

//初始化基本信息

int i=0;

location f;

f.first=NULL;

f.i=0;

str *p=pos;

//查找车站的位置

while(p)

{

if(::strcmp (s,p->s)==0)

{

f.first =p;

f.i=i;//车站的位置

return f;

}

i++;

p=p->next;

}

return f;

}

char car1[50],car2[50]; //保存相交车站的信息

int public_car(str *i,str * p1)//查找两线线路是否有公共车站以及公共车站个数{int k=0;

char *a;

str *p=i;

str *j=p1;

//利用循环来判断两个公交车线路上是否有相同的车站

while(p)

{a=p->s;

j=p1;

while(j)

{

if(::strcmp (a,j->s)==0) //比较两个结点信息是否相同

{if(k==0)

{::strcpy (car1,a);//用car1保存第一公共车站

k++;

break;}

if(k==1)

{::strcpy (car2,a);//用car2保存第二公共车站

k++;

break;

}

}

j=j->next ;

}

if(k==2) break;//因为最多只有两个相交车站,如果k=2了,跳出循环

p=p->next ;

}

return k;

}

//初始化暂存信息的数据结点

int s1,s2,k1,k2;

location f, x1,x2,y1,y2;

int count1,count2;//用于计算车站的个数

char B[50],C[50];//用于保存用户输入的车站信息

str *A,*p=NULL;

str **Str=new str*[3];//定义三条链表保存公交车基本信息

char station1[20][50],station2[20][50];//当有两个车站线路时用于保存每个车站线路的信息

void setData()//初始化基本数据的涵数

{

count1=0;

count2=0;

s1=-1,s2=-1,k1=-1,k2=-1;

x1.first=NULL;

x2.first=NULL;

y1.first=NULL;

y2.first =NULL;

}

void printAllStationLine()//打印全部线路的函数

{ //初始化保存车站的数组

char a[][50]={"农垦医院站","潜水运动站","海滨宾馆站","海上城市站","市旅游总公司站","霞湖医院站","海运集团公司站"};

char b[][50]={"东华站","湾桥站","农垦医院站","啤酒厂站","俱乐部站","广医附院站","国贸站", "广州湾站","建新东路站","霞湖医院站","霞山汽车运输总站"};

char c[][50]={"海滨医院站","海滨宾馆站","儿童公园站","广州湾站","建设路站", "湛江汽车南站","人民大道中巴专线","世纪广场站"};

//利用循环打印车站列表

for(int i=0;i<3;i++)

{

Str[i]=NULL;//初始化第i个链表

if(i==0)//初始化第一条公交车线路链表

{

for(int k=0;k<7;k++)

{

A=new str;

A->next =NULL;

A->last =NULL;

strcpy(A->s,a[k]);//把数组的数据保存到链表的每一个结点

if(!Str[i])

{

Str[i]=A;

p=A;

}

else {

p->next =A;

A->last =p;

p=A;

}

}

}

if(i==1)//初始化第二条公交车线路链表

{

for(int k=0;k<11;k++)

相关文档
最新文档