- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告2停车场.
停车场管理
实验内容
本实验利用栈和队列建立一个可以停放n辆车的停车场,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间先后排序,若停车场内已停满n辆车则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出场为它让路,待该辆车开出大门外,其他车辆在按次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用,按上述要求编制程序。以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车设置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以列表结构实现。
源程序
#includestdio.h#includestdlib.h#includestring.h/*------------------------------------------------------------------------------*/#define MAX 2 /*车库容量*/#define price 0.05 /*每车每分钟费用*/typedef struct time{int hour;int min;}Time; /*时间结点*/typedef struct node{char num[10];Time reach;Time leave;}CarNode; /*车辆信息结点*/typedef struct NODE{CarNode *stack[MAX+1];int top;}SeqStackCar; /*模拟车站*/typedef struct car{CarNode *data;struct car *next;}QueueNode;typedef struct Node{QueueNode *head;QueueNode *rear;}LinkQueueCar; /*模拟通道*//*------------------------------------------------------------------------------*/void InitStack(SeqStackCar *); /*初始化栈*/ int InitQueue(LinkQueueCar *); /*初始化便道*/int Arrival(SeqStackCar *,LinkQueueCar *); /*车辆到达*/ void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *); /*车辆离开*/void List(SeqStackCar,LinkQueueCar); /*显示存车信息*/ /*------------------------------------------------------------------------------*/void main(){SeqStackCar Enter,Temp;LinkQueueCar Wait;int ch;InitStack(Enter); /*初始化车站*/ InitStack(Temp); /*初始化让路的临时栈*/InitQueue(Wait); /*初始化通道*/while(1){ printf(\n1. 车辆到达);printf( 2. 车辆离开);printf( 3. 列表显示);printf( 4. 退出系统\n);while(1){scanf(%d,ch);if(ch=1ch=4)break;else printf(\n请选择: 1|2|3|4.);}switch(ch){ case 1:Arrival(Enter,Wait);break; /*车辆到达*/case 2:Leave(Enter,Temp,Wait);break; /*车辆离开*/case 3:List(Enter,Wait);break; /*列表打印信息*/case 4:exit(0); /*退出主程序*/default: break;} }}/*------------------------------------------------------------------------------*/void InitStack(SeqStackCar *s
文档评论(0)