电子地图管理系统
电子地图管理系统

#include <cstdio>#include <cstdlib>#include <>#include <cstring>#include <ctime>#include <string>#include <algorithm>#include <iostream>using namespace std;void start();void display();void displaypaixu();void displayjiansuo();Road *head = NULL;void SearchByClass(Road *head){time_t a,b;Road *prev,*p,*end,*temp_head;char Run_time[80];int i=0,Class;printf("请输入您所要查找的道路的番号:\n");scanf("%d",&Class);prev=p=(Road *)malloc(sizeof(Road));n",b-a);}void SearchById(Road *head){time_t a,b;Road *prev,*p,*end,*temp_head;char Run_time[80];int i=0,LinkId;printf("请输入您所要查找的道路的ID:\n");scanf("%d",&LinkId);prev=p=(Road *)malloc(sizeof(Road));n",b-a);}void SearchByName(Road *head){time_t a,b;Road *prev,*p,*end,*temp_head;char Run_time[80];int i=0;char Name[30];printf("请输入您所要查找的道路的名称:\n");scanf("%s",Name);prev=p=(Road *)malloc(sizeof(Road));n",b-a);}void updata(Road*head){FILE*pp;FILE*ppp;FILE*infile;FILE*outfile;time_t a;char filename[20];Road*p1;Road*p2;pp=fopen("","w");if(pp==NULL){printf("文件创建失败\n");exit(1);}.\n");printf("文件更新成功\n");fclose(ppp);n",b-a);}Road* readfile(void){FILE *fp;unsigned short temp_data_size[1]; ...."); time(&begin);head = BubbleSort( head );time(&end);i=end-begin;....");time(&begin);head=SelectSort( head );time(&end);i=end-begin;....");time(&begin);QListSort( &head ,NULL);time(&end);i=end-begin;. |\n");printf(" | |\n");printf(" | ");for(i=0; i<63; i++){printf(">");//此处用time函数来暂停秒以描述程序的加载过程start=clock();finish=clock();while((finish-start)<30)finish=clock();}printf(" ");printf("|\n");printf(" | Load successfully! |\n");printf(" | |\n");printf(" | |\n");printf("--------------------------------------------------------------------------\n");printf("\n 按任意键将进入系统 (Press any key to enter thesystem) \n ");printf("\n ");SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);system("pause");}void display(){printf("----------------------请按照菜单提示输入您的选择-------------\n");printf(" \n");printf(" <1>【读取文件】\n");printf(" <2> 【排序】 \n");printf(" <3> 【检索】 \n");printf(" <4> 【更新】 \n");printf(" <0> 【退出】 \n");}void displayjiansuo(){printf(" ----------------------请按照菜单提示输入您的选择-------------\n");printf(" \n"); printf(" <1>【指定LinkID检索】\n");printf(" <2>【指定交叉link列表示class番号检索】\n");printf(" <3>【指定查找岔路数检索】 \n");printf(" <4>【指定道路名称检索】 \n");printf(" <0>【返回】 \n");}void displaypaixu(){printf("----------------------请按照菜单提示输入您的选择-------------\n"); printf(" \n"); printf(" <1>【冒泡排序】 \n");printf(" <2>【选择排序】 \n");printf(" <3>【快速排序】 \n");printf(" <0>【返回菜单】 \n");}。
CBTC系统电子地图升级管控方案研究

CBTC系统电子地图升级管控方案研究陈 超(常州地铁集团有限公司,江苏常州 213000)摘要:列车集成控制技术发展以及轨道交通线网规模的逐渐扩大,线路基础设施改造、线路分段开通和线网之间互联互通需求越来越多,对电子地图的升级管控模式提出更高的要求。
分析现行CBTC 系统电子地图在数据准备、更新方式存在的不足,提出新的CBTC 系统电子地图升级的管控方案,以提高电子地图数据的可维护性、可靠性以及安全性。
关键词:电子地图;基于通信列车控制系统;移动授权;可维护性;可靠性;安全性中图分类号:U284.48 文献标志码:A 文章编号:1673-4440(2022)12-0089-04Research on Control and Management Scheme ofUpgrading CBTC System Electronic MapChen Chao(Changzhou Metro Group Co., Ltd., Changzhou 213000, China)Abstract: With the development of train integrated control technology and the gradual expansion of rail transit network, more and more demands have been put forward for the refurbishment of line infrastructure, the sectional commissioning of lines and the interconnection between line networks, which puts forward higher requirements for the control and management mode of upgrading electronic map. This paper analyzes the shortages in the way of data preparation and updating of the current Communication Based Train Control (CBTC) system electronic map and puts forward a new control and management scheme of upgrading electronic map to achieve higher maintainability, reliability and safety of electronic map data.Keywords: electronic map; CBTC; MA; maintainability; reliability; safetyDOI: 10.3969/j.issn.1673-4440.2022.12.018收稿日期:2022-09-13;修回日期:2022-12-05作者简介:陈超(1987—),男,工程师,本科,主要研究方向:城市轨道交通信号系统,邮箱:****************。
第六章-电子地图

(3)数据存储冗余小,软件运行速度快, 空间数据处理与分析操作时间短;
(4)包含车辆导航所需的交通信息,如限 速标志、交叉口转弯限制、信号灯等;
(5)信息查询灵活、方便。
6.2 导航电子地图的数据结构与数据模型
6.2.1 电子地图的数据类型及其特征 1、数据类型
电子地图中的数据可分为空间数据和 非空间数据两大类。空间数据又叫几何数 据,用来表示物体的位置、形态、大小和 分布等特征信息,根据空间数据的几何特 点,它又分为图形数据和图像栅格。
自从关系模型提出以来,20世纪70年代出现 了多种关系数据库的操作语言如 SQL,QUEL(Query Language)以及实用化的关 系数据库系统如IBM的R系统和加州大学伯克利 分校的INGRES (Interactive Graphics and Retrieval Systems)系统。随着社会信息化程度 的提高和计算机语言的发展,80年代出现了面向 对象的编程语言,之后面向对象的概念被引入到数 据库中,出现了面向对象的数据模型以及相应的数 据库系统如02和ORION。
但是,面向对象的数据模型没有完善的 理论基础,缺乏易于使用的标准化查询 语 言。因此,90年代又出现了基于对象而不 是基于记录的关系模型——面向对象的关 系模型(即混合模型)。混合模型可以通过 在已有的关系模型中添加面向对象的附加 层,或者将关系模型中的关系扩展到对象数 据中来实现。
6.2.4 面向弧线的空间数据结构设计
空间数据和非空间数据在导航电子地 图中是通过标示符连接的。
2、数据特征
电子地图中的数据特征包含以下几个 方面: (1)质量特征:如地图要素分类,目标在 物理、化学、人文、自然、经济等多个方 面的特征; (2)数量特征:如居民地人口、线状地物 长度、面状地物的面积、土壤的酸碱度、 腐殖质含量、雨量、温度等;
一种基于电子地图的地热信息管理平台

S N — U, AN C u n, E h o mi g U He X W G h a L I Z a . n
( stt o ot lSi c n ni eig ee U i rt o eh o g , in n 30 3 ,C ia I tue fC nr c nead E g er ,H bi nv sy fTc nl y Taj 0 10 hn ) ni o e n n e i o i
s p r r fau e s it i v n b o i g smp e i it i ig a d c n e in n d v lp n , i c n b r v d al u e i e t r s a n ut e i rwsn , i l n man an n , n o v n e t i e eo i g t a e p o e l o i d t n n o ma in t e r a o a l n n e rt , a d p o t g g oh r a e o r e no ma in ma a e n o b aa a d if r t o b e s n be a d it gi o y n r moi e t e l r s u c s i r t n g me t t e n m f o mo e n r aie .I h s l i o n ain fr f r e e e r h a d t c n lg o ua iai n r o l d t a ad a f u d t o u t r rs a c n e h oo y p p lrz t . m z o h o
电子地图管理系统_RTM

需求跟踪矩阵(RTM)
担当:张效群、侯冲冲、张晓文、盖玉杰
详细功能点说明 本次変 对应种类 担当者 更后
对应种类说明: ●新增/Δ 修改/×删除/◎保留/-无
读取文件并开始播放音乐/停止播放音乐并退出
●
陈畏龙
可在任意位置暂停播放音乐并且再次开始播放
●
陈畏龙
日方叫法
新规 流用 削除 再利用
增/Δ 修改/×删除/◎保留/-无 责任者
需求跟踪矩阵(RTM)
项目名称: 电子地图管理系统
No. 大分類 (模块) 中分類 (子模块)
PM:赵志愚
小分類 (功能点)
播放/停止
开始播放/停止播放
1
播放功能
暂停/开始
暂停播放音乐/重新开始播放
对应种类说明: 对应种类 新增 修改 删除 保留
说明 新增的模块或机能 部分重用,有变更 删除的模块或机能 完全重用,无变更
陈畏龙陈畏龙Fra bibliotek
城市电子地图数据库管理系统的构建与实现

业提供权威 、 标准和及时的空间信息框 架基础 , 而 且系统还可 以广泛服务于大众 , 满足不 同用户 埘数字地 图的个性需求 。
关键 词 数 据 库 管 理 ;电 子地 图 ;GI S技 术 ;多 元 数 据 ; 数据处理 TP 3 1 9 D OI : 1 0 . 3 9 6 9 / j . i s s n 1 6 7 2 9 7 2 2 . 2 0 1 3 . 0 8 . 0 2 3 中 图分 类 号
城市勘测部 门在将数 字地 图信 息 与多媒体 信息 结合 、 利用
现代大众媒介为公众服务方面取得 了明显进 展 。以数据 为 核心 的多元数字地 图产 品的需求是建立城市 电子地 图数据
Vo 1 . 4 1 No . 8
1 2 80
计 算 机 与 数 字 程
Co mp u t e r& Di g i t a l En g i n e e r i n g
总第 2 8 6 期 2 0 1 3 年 第 8期
城 市 电子 地 图数 据 库 管 理 系统 的构 建 与 实现
J I A NG Ya n W ANG Xi a o ( I nf o r ma t i o n Ma n a g e me n t a n d I n f or ma t i o n S y s t e m De p a r t me n t o f Hu be i Un i v e r s i t y o f Me d i c i ne ,S h i y a n 4 4 2 0 0 @ )
Ab s t r a c t Th e d a t a b a s e ma n a g e me n t s y s t e m o f e l e c t r o n i c c i t y ma p s o f NS DI d a t a d r i v e n i s b a s e d o n mu l t i p l e d a t a,i n v o l v i n g wi t h GI S
智能建筑管理(IBMS)系统设计方案,弱电小白必看内容!

大家好,我是薛哥。
智能建筑管理系统(IBMS)现在是整个智能化系统中利润最高的一部分了,因为需要二次开发,报价区间比较大,对于这样的系统,我们要熟悉一下,今天的文章非常重要。
智能化弱电工程设计与施工弱电工程项目设计与施工,弱电施工方案探讨,安防监控技术问题讨论,智能化工程案例分享,弱电行业最新资讯01正文智能建筑管理系统(IBMS)1.1 功能简述XX医院智能化集成管理平台(以下简称IBMS平台)是该项目智能化系统的上层建筑,是该项目中所有智能化子系统的大脑,扮演着沟通者、监护者、管理者与决策者的角色。
它利用标准化/或非标准化的通讯接口将各个子系统联接起来,共同构建一个全设备、全空间、全时域、全过程的有机整体。
它通过统一的平台,实现对各子系统进行全程集中检测、监视和管理,同时将所有子系统的数据收集上来,存储到统一的开放式关系数据库当中,使各个原本独立的子系统,可以在统一的IBMS平台上互相对话,做到充分数据共享。
IBMS集成管理平台采用模块化架构,每个模块既可以完成相应的功能,每个模块即可独立完成相应的单一功能操作,又可与其它模块配合完成更加复杂的联合功能操作。
在XX医院的智能集成管理系统项目中的智能系统集成平台作为核心软件,有机地将各个子系统整合起来,集中监控,统一管理,使它们协调工作,共同为XX 医院创造一个舒适、便捷、绿色、安全的医疗、办公、修养环境。
在XX医院的智能集成管理系统项目中,我司将充分考虑项目前期规划的标段区域的具体需求,同时兼顾未来发展,IBMS集成管理平台预留其他系统接口功能,以便XX医院后期项目子系统及其他的分站可接入IBMS集成管理平台主系统。
充分发挥IBMS的特点与优势,使得IBMS一次投入,终身享用。
1.2系统设计XX医院智能化集成平台(以下简称IBMS平台)是通过一个统一的平台,实现对各子系统进行集中监视和管理,将所有子系统之间需要共享的数据收集上来,存储到统一的开放式关系数据库当中,使各个本来毫不相关的子系统,可以在统一的IBMS平台上互相对话。
电子地图

电子地图电子地图系统是指在计算机软硬件的支持下,以地图数据库为基础,能够进行空间信息的采集、存储、管理、分析和显示的计算机系统。
电子地图系统由硬件、软件、数据和人员等部分组成。
这里着重介绍电子地图的软件组成与主要功能。
软件系统包括操作系统、地图数据库管理软件、专业软件以及其他应用软件。
在电子网络地图系统中地图数据库管理软件是它的核心,它具有构建,管理,检索查询,数据更新等功能:地图构建功能:允许用户根据设计方案选择内容、比例尺、地图投影、地图符号、颜色等,生产预想的地图,以满足需要。
从发展的角度来看,电子地图将成为新的地图制图平台,“地图制图平民化”的趋势也将越来越明显。
地图管理功能:除包含空间数据、属性数据和时间数据外,电子地图还包含多种数据源的数据,因此需要使用地图数据库管理这些复杂、大量的数据。
检索查询功能:可以根据用户需求来检索信息,并以多媒体的形式显示查询结果,包括图形到属性的查询,属性到图形的查询,图形、属性综合查询以及拓扑查询。
数据更新功能:能提供强有力的数据输入、编辑能力,以确保即时地更新数据,保证电子地图的现势性,并为再版地图创造优越的制图环境。
电子地图的图种较多,应用也非常广泛.现在我们来了解一下电子地图家族里的导航图,多媒体地图,网络地图的特点及行业应用.1.导航图现代交通发展以后,出现了复杂的公路体系。
这种公路错综复杂、四通八达,而周围景象往往千篇一律,不容易辨识。
地图是开车行路的必备工具,因此电子导航地图应运而生。
一张CD一ROM能装下全国的所有大大小小的道路数据,开车时携带便携式计算机,就能随时查阅地图。
不过这种电子地图并不像用一张光盘替代一本地图集这么简单,它还有更多的功能,如路径选择:出发前想去哪里,先告诉电子地图,它会帮助选择出一条最快捷的路线。
不一定必须知道目的地在地图上何处,只要有个地址电子地图用地理编码技术就能够自动找目标到并精确定位。
还有详细的资料库能辅助决定旅行计划,如它会告知旅途中会路过哪些名胜景点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <cstdio>#include <cstdlib>#include <malloc.h>#include <cstring>#include <ctime>#include <string>#include <algorithm>#include <iostream>using namespace std;void start();void display();void displaypaixu();void displayjiansuo();Road *head = NULL;void SearchByClass(Road *head){time_t a,b;Road *prev,*p,*end,*temp_head;char Run_time[80];int i=0,Class;printf("请输入您所要查找的道路的番号:\n");scanf("%d",&Class);prev=p=(Road *)malloc(sizeof(Road));//创建一个结点a=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&a));temp_head = head;if(temp_head == NULL){printf("无数据源");system("pause");exit(5);}while(temp_head!=NULL){if(temp_head->stRoadRec.linkid==Class){end=(Road *)malloc(sizeof(Road));printf("#linkid=%d ",temp_head->stRoadRec.LinkID);printf("roadnameflag=%d ",temp_head->stRoadRec.roadnameflag);printf("brunch=%d ",temp_head->stRoadRec.brunch);printf("dispclass=%d ",temp_head->stRoadRec.linkid);printf("roadname=%s#\n",temp_head->stRoadRec.roadname);p->stRoadRec.LinkID = temp_head->stRoadRec.LinkID;p->stRoadRec.roadnameflag = temp_head->stRoadRec.roadnameflag;p->stRoadRec.brunch = temp_head->stRoadRec.brunch;p->stRoadRec.linkid = temp_head->stRoadRec.linkid;p->stRoadRec.roadname = temp_head->stRoadRec.roadname;p->next=end;p = p->next;i++;}temp_head=temp_head->next;}end->next=NULL;p ->next = NULL;if(i>=5){save(prev);printf("查询结果数大于5,已保存至SearchResult.txt\n");}b=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&b));printf("本次查找用时%d 秒.\n",b-a);}void SearchById(Road *head){time_t a,b;Road *prev,*p,*end,*temp_head;char Run_time[80];int i=0,LinkId;printf("请输入您所要查找的道路的ID:\n");scanf("%d",&LinkId);prev=p=(Road *)malloc(sizeof(Road));//创建一个结点a=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&a));temp_head = head;if(temp_head == NULL){printf("无数据源");system("pause");exit(3);}while(temp_head!=NULL){if(temp_head->stRoadRec.LinkID==LinkId){end=(Road *)malloc(sizeof(Road));printf("#linkid=%d",temp_head->stRoadRec.LinkID);printf("roadnameflag=%d",temp_head->stRoadRec.roadnameflag);printf("brunch=%d",temp_head->stRoadRec.brunch);printf("dispclass=%d",temp_head->stRoadRec.linkid);printf("roadname=%s#\n",temp_head->stRoadRec.roadname);p->stRoadRec.LinkID=temp_head->stRoadRec.LinkID;p->stRoadRec.roadnameflag=temp_head->stRoadRec.roadnameflag;p->stRoadRec.brunch=temp_head->stRoadRec.brunch;p->stRoadRec.linkid=temp_head->stRoadRec.linkid;p->stRoadRec.roadname = temp_head->stRoadRec.roadname;p->next=end;p = p->next;i++;}temp_head=temp_head->next;}p ->next = NULL;if(i>=5){save(prev);printf("查询结果数大于5,已保存至SearchResult.txt\n");}b=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&b));printf("本次查找用时%d 秒.\n",b-a);}void SearchByName(Road *head){time_t a,b;Road *prev,*p,*end,*temp_head;char Run_time[80];int i=0;char Name[30];printf("请输入您所要查找的道路的名称:\n");scanf("%s",Name);prev=p=(Road *)malloc(sizeof(Road));//创建一个结点a=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&a));temp_head = head;if(temp_head == NULL){printf("无数据源");system("pause");exit(6);}while(temp_head!=NULL){if(strcmp(temp_head->stRoadRec.roadname,Name)==0){end=(Road *)malloc(sizeof(Road));printf("#linkid=%d",temp_head->stRoadRec.LinkID);printf("roadnameflag=%d",temp_head->stRoadRec.roadnameflag);printf("brunch=%d",temp_head->stRoadRec.brunch);printf("dispclass=%d",temp_head->stRoadRec.linkid);printf("roadname=%s#\n",temp_head->stRoadRec.roadname);p->stRoadRec.LinkID = temp_head->stRoadRec.LinkID;p->stRoadRec.roadnameflag = temp_head->stRoadRec.roadnameflag;p->stRoadRec.brunch = temp_head->stRoadRec.brunch;p->stRoadRec.linkid = temp_head->stRoadRec.linkid;p->stRoadRec.roadname = temp_head->stRoadRec.roadname;p->next=end;p = p->next;i++;}temp_head=temp_head->next;}p ->next = NULL;if(i>=5){save(prev);printf("查询结果数大于5,已保存至SearchResult.txt\n");}b=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&b));printf("本次查找用时%d 秒.\n",b-a);}void updata(Road*head){FILE*pp;FILE*ppp;FILE*infile;FILE*outfile;time_t a;char filename[20];Road*p1;Road*p2;pp=fopen("newfile.txt","w");if(pp==NULL){printf("文件创建失败\n");exit(1);}//判断文件是否创建成功//p1=head;if(p1==NULL){printf("空指针\n");}//判断头指针是否为空//while(p1!=NULL){fprintf(pp,"%d%d%d%s%d%d",p1->stRoadRec.data_size,p1->stRoadRec.LinkID,p1->stRoa dRec.road_size,p1->stRoadRec.roadname,p1->stRoadRec.brunch,p1->stRoadRec.linkid);p1=p1->next;}fclose(pp);//将动态链表中的内容写入文件newfile中//a=time(NULL);strcpy(filename,"update.dat");infile=fopen("jilu.txt","w");fscanf(infile,"%d%s",&a,&filename);//将时间和update.dat都写入文件中//outfile=fopen("jilu.txt","r");if(outfile==NULL)exit(1);fprintf(outfile,"%s",filename);//将文件中的内容读出来作为文件名//fclose(outfile);//将时间加入到文件名中,使更新后之前的文件内容不会被覆盖// ppp=fopen(filename,"wb");if(ppp==NULL)printf("更新文件创建失败\n");p2=head;while(p2!=NULL){fwrite(p2,sizeof(Road),1,ppp);p2=p2->next;}printf("文件更新中...\n");printf("文件更新成功\n");fclose(ppp);//文件更新完毕,将排序后的内容写入文本文件和二进制文件中// }void SearchByBruch(Road *head){time_t a,b;Road *prev,*p,*end,*temp_head;char Run_time[80];int i=0,Bruch;printf("请输入您所要查找的道路的岔路数:\n");scanf("%d",&Bruch);p=(Road *)malloc(sizeof(Road));//创建一个结点prev=p;a=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&a));temp_head = head;if(temp_head == NULL){printf("无数据源");system("pause");exit(4);}while(temp_head!=NULL){if(temp_head->stRoadRec.brunch==Bruch){end=(Road *)malloc(sizeof(Road));printf("#linkid=%d",temp_head->stRoadRec.LinkID);printf("roadnameflag=%d",temp_head->stRoadRec.roadnameflag);printf("brunch=%d",temp_head->stRoadRec.brunch);printf("dispclass=%d",temp_head->stRoadRec.linkid);printf("roadname=%s#\n",temp_head->stRoadRec.roadname);p->stRoadRec.LinkID=temp_head->stRoadRec.LinkID;p->stRoadRec.roadnameflag=temp_head->stRoadRec.roadnameflag;p->stRoadRec.brunch=temp_head->stRoadRec.brunch;p->stRoadRec.linkid=temp_head->stRoadRec.linkid;p->stRoadRec.roadname = temp_head->stRoadRec.roadname;p->next = end;p = p->next;i++;}temp_head = temp_head->next;}p->next = NULL;if(i>=5){printf("i的结果是%d\n",i);save(prev);printf("查询结果数大于5,已保存至SearchResult.txt\n");}b=time(NULL);strftime(Run_time,79,"%H:%M:%S",localtime(&b));printf("本次查找用时%d 秒.\n",b-a);}Road* readfile(void){FILE *fp;unsigned short temp_data_size[1]; //数据大小2byte buffunsigned int temp_LinkID[1]; //道路编号4byte buffunsigned short temp_road_size[1]; //道路名称的尺寸2byte buffunsigned int temp_info[1]; //道路信息4byte buffchar temp_name[5000]; //GTBL.dat 不存在就输入char *p_name; //道路名称指针Road *head,*pCur,*pEnd;pCur = (Road *)malloc(sizeof(Road));head=pCur;fp = fopen("GTBL.dat","rb+");if(fp == NULL){printf("错误:不能打开GTBL.dat\n");system("pause");looperror:printf("\n请输入你要打开的文件名\n");scanf("%s",temp_name);fp = fopen( temp_name,"rb+");if( fp == NULL){printf("错误:不能打开%s",temp_name);goto looperror;}}else{printf("读取成功\n");}while(1){pEnd = (Road *)malloc(sizeof(Road));fread( temp_data_size,sizeof(unsigned short),1,fp );pCur->stRoadRec.data_size = M_CHG_INT16(temp_data_size[0]);//printf("%d",pCur->stRoadRec.data_size);fread( temp_LinkID,sizeof(unsigned int),1,fp );pCur->stRoadRec.LinkID = M_CHG_INT32(temp_LinkID[0]);fread( temp_road_size,sizeof(short),1,fp );pCur->stRoadRec.road_size = M_CHG_INT16(temp_road_size[0]);fread( temp_info,sizeof(unsigned int),1,fp );temp_info[0] = M_CHG_INT32( temp_info[0] );pCur->stRoadRec.linkid = ( 0xf & temp_info[0] ); //printf("%d",pCur->stRoadRec.linkid);pCur->stRoadRec.brunch = ( (0x70 & temp_info[0])>>4 );pCur->stRoadRec.roadnameflag = ( (0x80 & temp_info[0])>>7 );if(pCur->stRoadRec.roadnameflag == 1){pCur->stRoadRec.roadname=(char*)malloc(pCur->stRoadRec.data_size-12);//printf("%d",p Cur->stRoadRec.data_size-12);p_name = (char*)malloc(pCur->stRoadRec.data_size-12);fread(pCur->stRoadRec.roadname,(pCur->stRoadRec.data_size-12),1,fp);//pCur->stRoadRec.roadname = p_name;}else{pCur->stRoadRec.roadname = NULL;}if(feof(fp)){break;}pCur->next = pEnd;pCur=pCur->next;}pCur->next=NULL;return head;}void QListSort(Road **head, Road *end){Road *right;Road **left_walk, **right_walk;Road *pivot, *old;int count, left_count, right_count;if (*head == end)return;do{pivot = *head;left_walk = head;right_walk = &right;left_count = right_count = 0;//取第一个节点作为比较的基准,小于基准的在左面的子链表中,//大于基准的在右边的子链表中for (old = (*head)->next; old != end; old = old->next){if (old->stRoadRec.LinkID < pivot->stRoadRec.LinkID) //小于基准,加入到左面的子链表,继续比较{++left_count;*left_walk = old; //把该节点加入到左边的链表中,left_walk = &(old->next);}else //大于基准,加入到右边的子链表,继续比较{++right_count;*right_walk = old;right_walk = &(old->next);}}//合并链表*right_walk = end; //结束右链表*left_walk = pivot; //把基准置于正确的位置上pivot->next = right; //把链表合并//对较小的子链表进行快排序,较大的子链表进行迭代排序。