大连省建设厅网站,网上服装商城网站建设方案策划书,阿里云轻量级服务器搭建wordpress,wordpress二维码动态图片大小内容仅供个人复习 *设停车场内只有一个的停放 n 辆汽车的狭长通道#xff0c;且只有一个大门可供汽车进出。汽车 在停车场内按车辆到达时间的先后顺序#xff0c;依次由北向南排列#xff08;大门在最南端#xff0c;最先到达的第 一辆车停放在车场的最北端#xff09;且只有一个大门可供汽车进出。汽车 在停车场内按车辆到达时间的先后顺序依次由北向南排列大门在最南端最先到达的第 一辆车停放在车场的最北端若车场内已停满 n 辆汽车则后来的汽车只能在门外的便道 上等候一旦有车开走则排在便道上的第一辆车即可开入当停车场内某辆车要离开时 在它之后开入的车辆必须先退出车场为它让路待该辆车开出大门外其它车辆再按原次序 进入车场每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为 停车场编制按上述要求进行管理的模拟程序。 [测试数据] 设 n2,输入数据为‘A’15‘A’210‘D’115‘A’3 20 ‘A’425‘A’530‘D’235‘D’440‘E’00。 其中‘A’表示到达‘D’表示离去‘E’表示输入结束。 [基本要求] 以栈模拟停车场以队列模拟车场外的便道按照从终端读入的输入数据序列进行模拟 管理。每一组输入数据包括三个数据项汽车“到达”或“离去”信息、汽车牌照号码及到 达或离去的时刻对每一组输入数据进行操作后的输出数据为若是车辆到达则输出汽车 在停车场内或便道上的停车位置若是车离去则输出汽车在停车场内停留的时间和应交纳 的费用在便道上停留的时间不收费。栈以顺序结构实现队列以链表实现。 [实现提示] 需另设一个栈临时停放为给要离去的汽车让路而从停车场退出来的汽车也用顺序存 储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车包含两个数 据项汽车的牌照号码和进入停车场的时刻。 *
#includeiostream
#define MAXSIZE 100
using namespace std;
//收费标准每小时2元
int n;
int cnt;//计数器
typedef struct Car
{int num;int arr 0;
}Car;typedef struct Stack
{Car *top;Car *base;int stacksize;}SqStack;typedef struct
{Car *bear;int front;int rear;
}SqQueue;SqStack s;SqStack s1; SqQueue Q;void Init(SqStack s)
{s.stacksize MAXSIZE;s.top new Car[MAXSIZE];s.base s.top;
}
void Init2(SqQueue Q)
{Q.bear new Car[MAXSIZE];Q.front Q.rear 0;
}void Push(SqStack s , int number , int time) // 车进停车场
{s.top;cout停车位置:cnt\n;s.top -num number;s.top -arr time;
}void Push_Queue(SqQueue Q , int number , int time) //停车位不够,进入队列
{if((Q.rear 1 ) % MAXSIZE Q.front) {cout队满\n;return ;}Q.bear[Q.rear].num number;Q.bear[Q.rear].arr time;Q.rear (Q.rear 1) % MAXSIZE;}
void Pop_Queue(SqQueue Q , int time)//从队列中进入停车场
{ if(Q.front Q.rear) return;//空队列表示外面没有等待的车辆 s.top;*s.top Q.bear[Q.front];s.top-arr time;Q.front (Q.front 1) % MAXSIZE;}void push_2(Car c)//外面的车出去让里面的车走进入中转栈
{s1.top;*s1.top c;
}void Pop_2( SqStack s1 , SqStack s)//从中转站进入停车场
{while(s1.top ! s1.base){s.top;*s.top *s1.top;s1.top--;}}void Pop(SqStack s , int number , int time)//出停车场
{cnt--;int flag 0;while(s.top -num ! number){flag 1;push_2(*s.top);s.top--; }cout时间:time - s.top -arr 费用:(time - s.top -arr) * 2\n;s.top--;if(flag) Pop_2(s1,s);Pop_Queue(Q,time);}int main()
{Init(s);Init(s1);Init2(Q);cout输入总车辆数:\n;cinn;//表示车辆总数char op;int number;int time;while(1){cinopnumbertime;if(op E) break;if(op A) cnt;if(cnt n)// 满了 加进队列里 {if(op A){cout进入队列\n;Push_Queue(Q,number,time);}else if(op D){Pop(s,number,time);} }else{if(op A){Push(s,number,time);}else if(op D){Pop(s,number,time);} }}return 0;
}