已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include#include#include#define Size 2#define price 5typedef struct char num20;int reachtime; int leavetime;carinfo;typedef struct stackcarinfo car5;int top; Stack;typedef struct Nodecarinfo data; struct Node *next;QueueNode;typedef struct QueueNode *front; QueueNode *rear;Queue,*linkQueue;int EnterQ(Queue *Q,carinfo x);int inistack(Stack *S) /初始化栈 S-top=-1;return 1;void Push(Stack *S,carinfo x) /进栈操作S-top+;S-carS-top=x; printf(进站成功!); void Pop(Stack *S,carinfo x) /出栈操作 if(S-top=-1) printf(空栈,无法出栈!); x=S-carS-top; S-top-; printf(出栈成功!);IsEmpty(Stack *S) /判断栈空 if(S-top=-1)return 1;else return 0;int iniQueue(Queue *Q) /初始化便道 Q-front=(QueueNode *)malloc(sizeof(QueueNode); /申请节点 if(Q-front!=NULL) Q-rear=Q-front; Q-front-next=NULL; return 1; else return 0;int EnterQ(Queue *Q,carinfo x) /进便道 QueueNode *newNode; newNode=(QueueNode *)malloc(sizeof(QueueNode); if(newNode!=NULL) newNode-data=x; newNode-next=NULL; Q-rear-next=newNode; Q-rear=newNode; return 1; else return 0;int DeleteQ(Queue *Q,carinfo x) /出便道 QueueNode *p; p=Q-front-next; if(Q-front=Q-rear) /判断便道是否有车 return 0; x=p-data; if(p-next=Q-rear) Q-rear=Q-front; Q-front-next=NULL; Q-front-next=p-next; free(p); return 1;void Lpush(Stack *S,carinfo x)Push(S,x); /进临时栈void LPop(Stack *S,carinfo x)Pop(S,x); int Arrive(Stack *S,Queue *Q) /车辆到达 carinfo x; int a; printf(输入车牌号:); scanf(%s,x.num); printf(请输入进车场的时间:); scanf(%d,&x.reachtime); if(S-top=Size-1) printf(车场已满,不能进入,进便道); a=EnterQ(Q, x); /递归调用进便道操作if(a=1)printf(OKn);elseprintf(No!n); else Push(S,x); return 1; int Departure(Stack *S) /车辆离开操作 int money;char x20;Stack *p=NULL;int point1=S-top;int point2; printf(请输入要离去的车牌号:); scanf(%s,x); int leavetime; while(point1!=-1&point2!=-1) if(strcmp(S-carpoint1.num,x)=0) /匹配函数,是否输入的信息与车场信息匹配 printf(请输入要离开的时间:); scanf(%d,&leavetime); for(;point1!=S-top;point1+,point2+) /扫描直到结束 S-carpoint1=S-carpoint2; /如果找到了 ,出车 S-top-; printf(成功出车场n); money=(leavetime-S-carpoint1.reachtime)*price;./费用信息 printf(费用:%dn,money); /离去时间减去到达时间乘单价 point2=-1; else point2=point1; point1-; if(point1=-1) /如果到结束了,还没有找到,则输出信息 printf(此车没有在停车场!); return 1; void Print1(carinfo x) /简单的输出操作 printf(车牌号:%sn,x.num); printf(进车场的时间:%dn,x.reachtime); printf(n-n);void Print(Stack *S)/打印车场信息 carinfo x; int point=S-top; /从栈头开始if(S-top=-1)printf(车场没有车辆登记进入!);else while(point!=-1) printf(n-n); printf(车的位置号:%dn,point);x=S-carpoint; / 把依次扫描到的信息赋值给x Print1(x); /调用输出函数 point-; /输出所有的车场信息 printf(显示车场信息成功!); /打印便道车辆void PrintQ(Queue *Q) QueueNode *p;/p=(QueueNode *)malloc(sizeof(Queue); /申请结点 p=Q-front-next; if(Q-front!=Q-rear) /*判断通道上是否有车*/ printf(n等待车辆的车牌号为: ); while(p!=NULL) /判断是否到结尾 printf(%s ,p-data.num); p=p-next; /如果没找到,继续向下找 printf(n); else printf(nttt便道里没有车.); void printGraph() printf(n-停车场-); printf(n-1.车辆到达 2.车辆离去-); printf(n-3.车场信息 0.退出系统-); printf(n-4.便道信息 -); printf(n-n);void main() Queue *Q; Stack *S=NULL; S=(Stack *)malloc(sizeof(Stack); /申请栈节点 Q=(linkQueue)malloc(sizeof(Queue); /申请便道节点 int i; iniQueue(Q); /初始化调用 inistack(S); /初始化调用 printGraph(); while(1) printf(n请输入操作); scanf(%d,&i); switch(i) case 1:Arrive(S,Q);printGraph(); bre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年基于AI的金融风控系统建设项目可行性研究报告及总结分析
- 2025年农机维修技术合作
- 2025年亲子教育培训机构项目可行性研究报告及总结分析
- 2025年信息透明化在企业管理中的应用项目可行性研究报告及总结分析
- 2025年多功能智能家居产品开发项目可行性研究报告及总结分析
- 2025年基因编辑技术研发可行性研究报告及总结分析
- 2025年数字健康管理项目可行性研究报告及总结分析
- 2025年绿化苗木培育合同协议
- 2025年数字剧院技术应用项目可行性研究报告及总结分析
- 2025年未来农业科技示范园区建设项目可行性研究报告及总结分析
- 篮球竞赛风险管理与应急预案制定
- 2023南头古城项目简介招商手册
- 智能化农业机械装备技术
- 工厂介绍文案
- 青岛大学考研真题-电路
- 各岗位安全知识及职责培训
- 12.2滑冰教案-高一上学期体育与健康人教版
- 因公出国人员审查表
- 新外研版高中英语选择性必修一Unit3 Writing教学课件
- 重庆市房屋拆迁申请书 标准
- 人民版高中历史必修一-专题三-第2课-辛亥革命课件1
评论
0/150
提交评论