- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构航班信息的查询与检索
目录
第1章 概述 2
第2章 设计要求与分析 2
2.1设计要求 2
2.2设计分析 3
2.2.1定义数据类型 3
2.2.2实现排序的个函数说明 4
第3章 算法实现 4
3.1 一趟分配算法 4
3.2 一趟收集算法 5
3.3 链式基数排序算法 5
3.4 二分查找的函数定义 6
第4章 程序代码 7
第5章 运行与测试 7
第6章 实验反思 10
参考文献 11
第1章 概述
排序和查找是在数据信息处理中使用频度极高的操作。为了加快查找的速度,需要先对数据记录按关键字排序。当今乘飞机旅行的人越来越多,人们需要关心了解各类航班的班次、时间、价格及机型等信息。在这个飞机航班数据的信息模型中,航班号是关键字,而且是具有结构特点的一类关键字。因为航班号是字母数字混变的,例如CZ3869,这种记录集合是一个适合与多关键字排序的例子。
第2章 设计要求与分析
2.1设计要求
该设计要求对飞机航班信息进行排序和查找.可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。
对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他词关键字的查找可采用最简单的顺序查找方法进行,因为他们用的较少。
每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等,假设航班信息表如下表所示:
航班信息表
航班号 起点站 终点站 班期 起飞时间 到达时间 机型 票价 CA1544 合肥 北京 1.2.4.5 1055 1240 733 960 MU5341 上海 广州 每日 1420 1615 M90 1280 CZ3869 重庆 深圳 2.4.6 0855 1035 733 1010 MU3682 桂林 南京 2.3.4.6.7 2050 2215 M90 1380 HU1836 上海 北京 每日 0940 1120 738 1250 CZ3528 成都 厦门 1.3.4.5.7 1510 1650 CRJ 1060 MU4594 昆明 西安 1.3.5.6 1015 1140 328 1160 SC7425 青岛 海口 1.3.6 1920 2120 DH4 1630 其中航班号一项的格式为:
k0 k1 k3 k4 k5 k6
C Z 3 8 6 9 其中k0和k1的输入值是航空公司的别称,用两个大写字母表示,后4位为航班表号,这种航班号关键字可分成两段,即字母和数字。其余七项输入内容因为不涉及本设计的核心,因此除了票价为数值型外,均定义为字符串型即可。
2.2设计分析
2.2.1定义数据类型
根据设计要求,我们知道设计中所用到的数据记录只有航班信息,因此要定义行管的数据类型:
Typedef struct{
Char start[7];
Char end[7];
Char sche[12];
Char time1[5];
Char time2[5];
Char model[4];
Int price;
}InfoType;
Typedef struct{
KeyType keys[keylen];
InfoType others;
Int next;
}SLNode;
Typedef struct{
SLNode s1[MaxSpace];
Int keylen;
Int length;
}SLList;
为了进行基数排列,需要定义在分配和手机操作使用到的指针数组:
Typedef int ArrType_n[10];
Typedef int ArrType_.c[26];
2.2.2实现排序的个函数说明
(1)一趟分配函数:
Void Distribute(SLNode *s1,int I,ArrType f,ArrType e);
//本算法是按关键字keys[i]建立RADIX个子集,是同一个子集中记录的keys[i]相同,//f[0..RADIX]和e[0..RADIX]分别指向各自表中的第一个和最后一个记录
(2)一趟搜集函数:
Void Collect(SLNode *s1,int i,ArrType f,ArrType e);
//本算法是按关键字keys[i]从小到大将[0..RADIX]所指的各子表一次连接成一个链表
(3)链式基数排序函数:
Void RadixSort(SLList L);
//本算法是按关键字从低位到高位依次对各关键字进行分配和收集,分两端实现
(4)
您可能关注的文档
最近下载
- 养老院门卫管理制度.pdf VIP
- 电力设施保护条例实施细则.pdf VIP
- 统编语文三年级上册第七单元《口语交际:身边的“小事” 》.pptx VIP
- 2024年中央纪委国家监委驻中国邮政集团有限公司招聘笔试参考题库附带答案详解.pdf VIP
- 《大学生创新创业基础》 第六章 市场调查与营销策略.pptx
- 建筑防水工程施工质量监理实施细则hg.doc VIP
- 环境材料概论 课件全套 第1--9章 绪论、吸附材料 ---环境材料的绿色设计.pptx
- 中职英语英语教学计划.docx VIP
- HGT2226-2019普通工业沉淀碳酸钙.pdf VIP
- 3肖仰华-大规模知识图谱构建与应用.pdf VIP
文档评论(0)