版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上#include <iostream>#include <string>using namespace std;const int MAX_STOP=4; /定义停车场最大停车数const int MAX_PLATE=10; /定义车牌号最大长度/数据结构定义/定义存储汽车信息的结构体typedef structchar license_plateMAX_PLATE;/汽车牌照号码,定义为一个字符指针类型char state; /汽车当前状态,字符p表示停放在停车位上,字符s表示停放在便道上,每辆车的初始状态用字符i来进行表示CAR;/定义模拟
2、停车场的栈结构typedef structCAR STOPMAX_STOP; /汽车信息的存储空间 int top; /用来指示栈顶位置的静态指针SeqStack;/定义模拟便道的队列结构typedef struct nodeCAR WAIT; /汽车信息的存储空问 struct node *next; /用来指示队列位置的动态指针QNode; /链队列节点的类型/定义链队列的收尾指针typedef structQNode *front,*rear;LQueue; /将头尾指针封装在一起的链队/函数声明int Empty_LQueue(LQueue *q); /判队空int LeaveChec
3、k(SeqStack parking,char *license_plate); /检查离开的车是否在停车场中int QueueLength(LQueue *q); /判队长度int Out_LQueue(LQueue *&sidewalk,char *license_plate); /出队操作int StackEmpty(SeqStack parking); /判断栈是否为空int StackFull(SeqStack parking); /判断栈是否为满int StackPop(SeqStack &parking); /出栈操作int StackTop(SeqStack p
4、arking, char *license_plate); /取栈项元素void Car_come(SeqStack &parking,LQueue *&sidewalk); /有车到来时的操作void Car_leave(SeqStack &parking,LQueue *&sidewalk); /有车离开的操作void Display(SeqStack parking); /显示停车场内的所有信息调试时用void InitStack(SeqStack &parking); /初始化栈void InitList(LQueue *&sidewal
5、k); /初始化队列void In_LQueue(LQueue *&sidewalk, char *license_plate); /进队操作void Input_Check(char *license_plate); /检验输入的车牌是否合法void StackPush(SeqStack &parking,char *license_plate); /进栈操作void main()/定义变量SeqStack parking;LQueue *sidewalk= NULL;char *choice= new char;int flag=1; /定义一个变量判断是否退出/初始化一个
6、为空的停乍场InitStack(parking);/初始化一个为空的便道InitList(sidewalk);/运行界面及功能选择while(flag)cout<<" 停车场模拟管理系统 "<<endl; cout<<"*"<<endl; cout<<"t有车到来时请按C键"<<endl<<endl; cout<<"t有车要走时请按l键"<<endl<<endl; cout<<&quo
7、t;t查看停车场请按D键"<<endl<<endl; cout<<"t要退出系统请按Q键"<<endl<<endl; cout<<"*"<<endl; cout<<"请选择操作:"gets(choice);if(1!=strlen(choice)cout<<"请正确输入选项!"continue;elseswitch(*choice)case 'c':case 'C':
8、Car_come(parking,sidewalk);break;case'l' :case'L':Car_leave (parking,sidewalk);break;case'q':case 'Q':flag=0;break;case 'd':case 'D':Display(parking);break;default:cout<<"选择不正确!请重新选择"<<endl;/有车到来时的操作void Car_come(SeqStack &par
9、king, LQueue *&sidewalk)/定义变量char license_plateMAX_PLATE; cout<<"请输入车辆的车牌号码:" Input_Check(license_plate); /判断停车场是否已满,满则进入便道,不满进入停车场 if(StackFull(parking)In_LQueue(sidewalk,license_plate); /进入便道cout<<"停车场已满清在便道等候,您的位置为"<<QueueLength(sidewalk)<<endl;else
10、StackPush(parking,license_plate); /进入停车场cout<<"请进入停车场中的"<<parking.top+1<<"号停车位"<<endl;/有车离开时的操作void Car_leave(SeqStack &parking, LQueue *&sidewalk)/定义变量SeqStack tmpparking; /定义临时停车场char leave_license_plateMAX_PLATE;/要离开的车牌号char license_plateMAX_PLA
11、TE; /存放从停车场中读出来的车牌信息InitStack(tmpparking); /初始化临时停车场/判断停车场中是否有车if(StackEmpty(parking)cout<<"当前停车场中没有车"<<endl;return; /退出子函数 cout<<"请输入要离开的车牌照:" Input_Check(leave_license_plate);cout<<"当前停车场中有"<<parking.top+1<<"辆车"<<end
12、l;if(LeaveCheck(parking,leave_license_plate)/判断车是否在停车场中/车在停车场中cout<<"您的车在 "<<LeaveCheck(parking,leave_license_plate)<<"号车位上"<<endl;while(StackTop(parking,license_plate)&& (strcmp(parking.STOPparking.top.license_plate, leave_license_plate)!=0)strcpy
13、(parking.STOPparking.top.license_plate, license_plate);cout<<"牌照为"<<license_plate<<"的车暂时退出停车场"<<parking.top+1<<"号位"<<endl;StackPush(tmpparking,license_plate); /停车场中的车暂时退出进入临时停车场StackPop(parking); /出栈cout<<"牌照为"<<
14、license_plate<<"的车离开停车场"<<parking.top+1<<"号位"<<endl;StackPop(parking); /出栈/将临时停车场巾的车停回停车场while(StackEmpty(tmpparking)!=1)StackTop(tmpparking, license_plate);StackPush(parking, license_plate);cout<<"牌照为"<<license_plate<<"的车进
15、入停车场"<<parking.top+1<<"号位"<<endl;license_plate0='0'StackPop(tmpparking);if(parking.top+1=MAX_STOP-1)/判断车离开前停车场是否停满if(QueueLength(sidewalk)/如果停满则判断便道上是否有车/便道中有车则从便道中停入停车场Out_LQueue(sidewalk, license_plate); /出队StackPush(parking, license_plate);/入栈cout<<&
16、quot;在便道中牌照为"<<license_plate<<"的车进入停车场"<<parking.top+1<<"号"<<endl;else/车不在停车场中cout<<"您的车不在停车场中!"<<endl;/初始化顺序栈void InitStack(SeqStack &parking)parking.top= -1;int StackEmpty(SeqStack parking)if(parking.top = -1)return 1
17、;elsereturn 0;/判栈满int StackFull(SeqStack parking) if(parking.top = MAX_STOP-1) return 1; else return 0;/入栈void StackPush(SeqStack &parking , char *license_plate )parking.top+;strcpy(parking.STOPparking.top.license_plate,license_plate);parking.STOPparking.top.state ='p'/出栈返回栈顶指针int StackP
18、op(SeqStack &parking)if(StackEmpty(parking)return 0;elsereturn parking.top-;int StackTop(SeqStack parking, char *license_plate )if(StackEmpty(parking)return 0;elsestrcpy(license_plate, parking.STOPparking.top.license_plate);return 1;/显示所有void Display(SeqStack parking)if(parking.top=-1)cout<&l
19、t;"停车场为空"<<endl;elsewhile(parking.top!=-1)cout<<"车牌号为:"<<parking.STOPparking.top.license_plate;cout<<",停在"<<parking.top+1<<"号车位上"<<endl;parking.top-;/初始化队列void InitList(LQueue *&sidewalk) sidewalk = (LQueue *)mallo
20、c(sizeof(LQueue); sidewalk->front=sidewalk->rear=NULL;/入队void In_LQueue(LQueue *&sidewalk,char *license_plate)QNode *car_on_sidewalk;car_on_sidewalk= (QNode *)malloc(sizeof(QNode); /为新节点开辟新空问strcpy(car_on_sidewalk->WAIT.license_plate,license_plate);/将数据写入节点car_on_sidewalk->WAIT.state
21、= 's' /写入停车信息car_on_sidewalk->next= NULL;if(Empty_LQueue(sidewalk) /队空则创建第一个节点sidewalk->front= sidewalk->rear=car_on_sidewalk;else/队非空插入队尾sidewalk->rear->next = car_on_sidewalk;sidewalk->rear = car_on_sidewalk;/判队空int Empty_LQueue(LQueue *q)if(q->front = NULL)return 1;el
22、sereturn 0;/判队长度返回队长int QueueLength(LQueue *q) QNode *p=q->front; int i=0; while(p!=NULL) i+;p=p->next;return i;/出队成功返回l队空返回0int Out_LQueue(LQueue *&sidewalk,char *license_plate)QNode *car_on_sidewalk;if(Empty_LQueue(sidewalk) /如果队空返回0return 0;car_on_sidewalk= sidewalk->front;strcpy(license_plate,car_on_sidewalk->WAIT.license_plate);/取出队头元素if(s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年监理工程师《工程监理基本理论》考前押题卷(附答案)
- 医学在线考卷试题及答案展示
- 销售内勤入职试题及答案解析
- 现金收付考试试题及参考答案
- 2026年8月中国农业大学后勤保障处校园服务中心合同聘用制C岗人员招聘1人笔试模拟试题及答案详解
- 2026年甘肃省政协所属事业单位招聘笔试备考试题及答案详解
- 2026首都博物馆劳务派遣制员工招聘笔试模拟试题及答案详解
- 2026首都医科大学附属北京地坛医院第三批招聘笔试备考题库及答案详解
- 2026年栾川县网格员招聘笔试备考试题及答案解析
- 2026年勉县事业单位人员招聘笔试参考题库及答案解析
- 开启科学探索之旅 课件(内嵌视频) 2025-2026学年人教版初中物理八年级上册
- 县四大班子联席会议制度
- 运营中心管理制度模板
- OpenFOAM培训教学课件
- DB53-T 1269-2024 改性磷石膏用于矿山废弃地生态修复回填技术规范
- 古建筑修复项目可行性研究报告
- 品牌可持续发展研究报告2025年
- 电子商务平台系统设计与实施方案
- 新能源项目融资方案模板
- 7.4跨学科实践活动:海洋资源的综合利用与制盐说课稿-2024-2025学年九年级化学科粤版(2024)下册
- 公共艺术-音乐篇(中职公共艺术)完整版全套教学课件
评论
0/150
提交评论