- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构程设计-航班查询与检索(含代码、流程图、输出结果)
算法与数据结构实验报告
航班查询与检索
题目:航班查询与检索
指导老师:
组长:
成员:
一:航班信息的查询与检索
初始化信息
进行排序
主菜单显示
输入查询序号
判断序号是否合法
按航班号查询
按时间查询
按地点查询
按票价查询
输出航班信息
结束
开始
按时间查询:
输入查询时间
Time=1
按抵达时间查询
按起飞时间查询
返回查询信息
开始
是
否
开始
输入票价范围
判断有无符合条件票价票价
输出相应信息
返回查询信息
按票价范围查询
按站点查询:
开始
返回查询信息
输入起点终点及AD
AD=1?
按目的站查询
按起点站查询
否
是
二分法查询:
输入航班号
开始
输入航班号对应序列号
High=mid+1
Low=highh
Num=F[mid].flight_number
Mid=(high+low)/2
NumF[mid]fligt_number
Low=mid+1
返回
是
否
二:
算法分析:程序主要采用结构体 链表 顺序表 队列
主要算法:/*航班信息的查询与检索*/
三:/*航班信息的查询与检索*/
#includeiostream.h
#includestring.h
#includestdio.h
#define N 6 //航班数
//航班信息
typedef struct flight
{
char flight_number[10]; //航班号
char start_address[10]; //起飞站
char arrived_address[10]; //终点站
char work_date[10]; //班期
char start_time[6]; //起飞时间
char arrived_time[6]; //到达时间
char FlightType[4]; //机型
int fare; //票价
}DataType;
struct flight Flight[N];
//-----------按航班号进行基数排序-----------
typedef char KeyType;
#define D 7 // D为排序码的最大位数
#define R a // R为基数,这里为小于字母a代表的整型值
struct Node; //单链表结点类型
typedef struct Node RadixNode;
struct Node
{
KeyType key[D]; //关键字
DataType info; //数据信息
RadixNode *next;
};
typedef RadixNode * RadixList;
typedef struct QueueNode
{
RadixNode *f; //对列的头指针
RadixNode *e; //对列的尾指针
}Queue;
Queue queue[R];//用队列表示桶
void radixSort(RadixList * plist, int d, int r)
{
int i,j,k;
RadixNode *p, *head;
head=(*plist)-next;
for(j=d-1; j=0; j--) //进行d次分配和收集
{
p=head;
for(i=0; ir; i++)
{
queue[i].f=NULL; queue[i].e=NULL; //清队列
}
while(p!=NULL)
{
k=p-key[j]; //按排序码的第j个分量进行分配
if(queue[k].f==NULL) queue[k].f=p; // 若第k个堆为空,则当前记录为队头
else (queue[k].e)-next=p; // 否则当前记录链接到第k队的队尾
queue[k].e=p;
p=p-next;
}
i=0;
while(queue[i].f==NULL) i++; // 从r个队列中找出第一个非空的队列
p=queue[i].e; head=queue[i].f; //head为收集链表的头指针
for(i++; ir; i++)
i
您可能关注的文档
最近下载
- 2024电梯监督检验和定期检验指南第1部分:乘客和载货电梯.pdf VIP
- 合成药物工艺研究.pptx VIP
- 电气预防性试验及防雷试验工程方案投标文件(技术方案).doc
- 基于“六位一体”内部控制的创新实践.pdf VIP
- 外商投资产业指导目录(2007年修订)(全文).doc VIP
- 新一代大学英语(提高篇)视听说教程 1 B1U1.pptx VIP
- 2025年秋新人教版数学三年级上册全册课件.pptx
- 吉J2020-011:木塑复合材料景观工程构造.pdf VIP
- 2024电梯监督检验和定期检验指南第3部分:杂物电梯.docx VIP
- 服装裁剪与制作(第三版)全书电子教案教学课件汇总.ppt
文档评论(0)