




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电脑停在课件页面不动
- qms考试题及答案
- 电网基建业务知识培训课件
- 电缆知识基础培训课件
- 电线电缆标准培训课件
- 管线保护专项方案
- 【ABeam】2025中国个人信息保护和网络安全相关法律法规的趋势与应对报告
- 北京一模考试美术试题及答案
- 北京初二模拟考试试卷及答案
- 北电实验班分班考试题及答案
- 《电业安全工作规程》
- 《高级计量经济学》-上课讲义课件
- 塔吊基础-专项施工方案
- 《工贸行业重大安全生产事故隐患判定标准》解读课件
- 第二届中国管理培训生项目现状与发展调研报告
- 发证机关所在地区代码表
- 过去分词公开课--完整版PPT课件
- 书法的章法布局(完整版)
- GB∕T 10429-2021 单级向心涡轮液力变矩器 型式和基本参数
- 注射技术操作并发症的预防及处理PPT课件
- 资产评估质量保证措施
评论
0/150
提交评论