数据结构公交换乘系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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++)