资源描述:
《停车场问题(打印稿)C++.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验二停车场管理问题描述:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在停车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场,每辆停放在停车场的车离开停车场时必须按它停留时间长短交纳费用。试为停车场编制按此要求进行管理的模拟程序。基本要求:以栈模拟停车场,以队
2、列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。测试数据:设n=2,输入数据为(’A’,1,5),(’A’,2,10),(’D’,1,15),(’A’,3,20),(’A’,4,25),(’A’,5,30),(’D’,2,35),(’D’,
3、4,40),(’E’,0,0)。其中:’A’表示到达(Arrival);’D’表示离去(Departure);’E’表示输入结束(End)。实现提示:需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。下面是以VC代码写成的,但没有用到栈和队列的中所声明的类。要求:使用栈和队列的中所声明的类改编,并保证运行正确。#includestructnode1{intcno;//车号intctime;//
4、到达停车场的时间};typedefstruct{node1*base;node1*top;intsize;}stack1,stack2;//分别均用顺序存储表示停车场栈和临时停放栈structnode2{intcno;//车号intctime;//到达时间node2*next;};typedefstruct{node2*front;//队头指针node2*rear;//队尾指针}que;//用链表表示队列--便道voidinitial1(stack1&s,intn)//初始化停车场栈{s.base=newnode1[n*sizeof(node1)];if(!s
5、.base){cout<<"stack1false!";return;}s.top=s.base;s.size=n;}voidinitial2(que&q){//初始化等待队列--便道q.front=q.rear=newnode2;if(!q.front){cout<<"queuefalse!";return;}q.front->next=NULL;}voidinitial3(stack2&s,intn)////初始化临时停放栈{s.base=s.top=newnode1[(n-1)*sizeof(node1)];if(!s.base){cout<<"stac
6、k2false!";return;}}voidINstack1(stack1&s,intcnum,intctim)//入停车场栈{s.top->cno=cnum;s.top->ctime=ctim;s.top++;}voidINque(que&q,intcnum,intctim)//入等待队列--便道{node2*p;p=newnode2;p->cno=cnum;p->ctime=ctim;p->next=NULL;q.rear->next=p;q.rear=p;}voidINstack2(stack1&s1,stack2&s2,intk)//将停车场s1中k
7、之上的车倒入临时停放栈s2{node1*p;p=s1.base;while(p->cno!=k)//查找车号为k的车所在位置,由p指向p++;while(s1.top-1!=p){//将停车场s1中k之上的车倒入临时停放栈s2s2.top->cno=s1.top->cno;s2.top->ctime=s1.top->ctime;s2.top++;s1.top--;}}voidmain(void){stack1s1;//停车场栈stack2s2;//临时停放栈queq;//等待队列--便道intprice,time,n,num,m;charstate;cout<
8、<"输入价格:";cin>>price