题目描述

refresh最近发了一笔横财,开了一家停车场。由于土地有限,停车场内停车数量有限,但是要求进停车场的车辆过多。当停车场满时,要进入的车辆会进入便道等待,最先进入便道的车辆会优先

进入停车场,而且停车场的结构要求只出去的车辆必须是停车场中最后进去的车辆。现告诉你停车场容量N以及命令数M,以及一些命令(Add num 表示车牌号为num的车辆要进入停车场或便道,
Del 表示停车场中出去了一辆车,Out 表示便道最前面的车辆不再等待,放弃进入停车场)。假设便道内的车辆不超过1000000.

输入

输入为多组数据,每组数据首先输入N和M(0< n,m <200000),接下来输入M条命令。

输出

输入结束后,如果出现停车场内无车辆而出现Del或者便道内无车辆而出现Out,则输出Error,否则输出停车场内的车辆,最后进入的最先输出,无车辆不输出。

示例输入

2 6
Add 18353364208
Add 18353365550
Add 18353365558
Add 18353365559
Del
Out

示例输出

18353365558
18353364208

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define stackmax 10000
#define stacknum 11111
typedef long long int ElenType;
typedef struct
{
ElenType *base;
ElenType *top;
int stacksize;
}SqStack;
int InitStack(SqStack &S)//栈的初始化;
{
S.base=(ElenType *)malloc(sizeof(ElenType)*stacknum);
if(!S.base) exit(0);
S.top=S.base;
S.stacksize=stacknum;
return 1;
}
void push(SqStack &S,ElenType &e)//进栈;
{
if(S.top-S.base>=S.stacksize)
{
S.base=(ElenType *)realloc(S.base,sizeof(ElenType)*(stacknum+stackmax));
if(!S.base) exit(0);
S.top=S.base+S.stacksize;
S.stacksize+=stackmax;
}
*S.top++=e;
}
int pop(SqStack &S)//出栈;
{
if(S.top==S.base)
return 0;
S.top--;
return 1;
}
int StackEmpty(SqStack &S)//判断栈是否为空栈;
{
if(S.top==S.base)
return 1;
else
return 0;
}
void print(SqStack &S)//栈的元素的输出;
{
while(!StackEmpty(S))
{
S.top--;
printf("%lld\n",*S.top);
}
}
typedef long long int QElemType;
typedef long long  int Status;
typedef struct QNode
{
QElemType data;
QNode *next;
} QNode, *Queueptr;
typedef struct
{
Queueptr front;
Queueptr rear;
} LinkQueue;
Status InitQueue (LinkQueue &q)//队的初始化;
{
q.front=q.rear=(Queueptr)malloc(sizeof(QNode));
if(!q.front) exit(0);
q.front->next=NULL;
return 1;
}
Status EnQueuer(LinkQueue &q, QElemType &e)//进队;
{
Queueptr p;
p=(Queueptr)malloc(sizeof(QNode));
if(!p) exit(0);
p->data=e;
p->next = NULL;
q.rear->next=p;
q.rear=p;
return 1;
}
Status DeQueuel(LinkQueue &Q,QElemType &e)//出队;
{
Queueptr p;
if(Q.front==Q.rear)
return 0;
p=Q.front->next;
e=p->data;
Q.front->next=p->next;
if(Q.rear==p)
Q.rear=Q.front;
free(p);
return 1;
}
int EmptyQueue(LinkQueue q)//判断是否为空队;
{
if(q.front==q.rear)
return 1;
else
return 0;
}
QElemType Queuelength(LinkQueue q)//队的长度‘
{
QElemType i=0;
Queueptr p;
p=q.front;
while(p!=q.rear)
{
i++;
p=p->next;
}
return i;
}
int main()
{
long int i,n,m;
long long int num;
char c[4];
while(~scanf("%ld%ld",&n,&m))
{
SqStack S;
InitStack(S);
LinkQueue Q;
InitQueue(Q);
int flag=1;
for(i=1; i<=m; i++)
{
scanf("%s", c);
if(strcmp(c,"Add")==0)
{
scanf("%lld",&num);
if(S.top-S.base<n)//判断栈停车位是否已满,
push(S, num);
else
EnQueuer(Q,num);
}
if(strcmp(c,"Del")==0)
{
if(StackEmpty(S))
flag=0;//标记不合法的命令;
else
{
pop(S);
DeQueuel(Q,Q.front->data);
push(S,Q.front->data);
}
}
if(strcmp(c,"Out")==0)
{
if(EmptyQueue(Q))
flag=0;//标记不合法的命令;
else
{
DeQueuel(Q,Q.front->data);
}
}
}
if(flag==0)
printf("Error\n");
else
print(S);//栈内元素的输出;
}
}
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <stack>
using namespace std;
int main()
{
int N,M,x,t;
while(~scanf("%d %d",&N,&M))
{
char minglin[10],num[100];
queue<string>qd;//队列的定义;
stack<string>sz;//栈的定义;
t=0;
while(M--)
{
scanf("%s",minglin);
if(minglin[0]=='A')
{
scanf("%s",num);
x=sz.size();//栈的长度;
if(x<N)
sz.push(num);//进栈;
else
qd.push(num);//进队;
}
else if(minglin[0]=='D')
{
if(sz.empty())//空栈;
t=1;
else
{
sz.pop();//出栈;
if(!qd.empty())
{
sz.push(qd.front());//进栈;
qd.pop();//出队;
}
}
}
else if(minglin[0]=='O')
{
if(qd.empty())
t=1;
else
qd.pop();
}
}
if(t==1)
printf("Error\n");
else
{
while(!sz.empty())
{
cout<<sz.top()<<endl;
sz.pop();
}
}
}
return 0;
}

refresh的停车场相关推荐

  1. sdut 2088 数据结构实验之栈与队列十一:refresh的停车场

    数据结构实验之栈与队列十一:refresh的停车场 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem ...

  2. 数据结构实验之栈与队列十一:refresh的停车场

    Description refresh最近发了一笔横财,开了一家停车场.由于土地有限,停车场内停车数量有限,但是要求进停车场的车辆过多.当停车场满时,要进入的车辆会进入便道等待,最先进入便道的车辆会优 ...

  3. java停车管理系统中期检查_java毕业设计_springboot框架的停车场收费管理系统

    这是一个基于java的毕业设计项目,毕设课题为springboot框架的停车场收费管理系统, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jsp+s ...

  4. 【opencv】(13) 案例:停车场空余车位检测,附python完整代码

    各位同学好,今天和大家分享一下如何使用Opencv完成停车场的车位检测,及空余车位计数,先放张图看效果. 红框代表该车位有车,绿框代表该车位空余,左上角记录有几个空余车位,黄色数字代表该车位内的像素个 ...

  5. Spring Cloud(十)高可用的分布式配置中心 Spring Cloud Config 中使用 Refresh

    上一篇文章讲了SpringCloudConfig 集成Git仓库,配和 Eureka 注册中心一起使用,但是我们会发现,修改了Git仓库的配置后,需要重启服务,才可以得到最新的配置,这一篇我们尝试使用 ...

  6. 基于 JWT + Refresh Token 的用户认证实践

    HTTP 是一个无状态的协议,一次请求结束后,下次在发送服务器就不知道这个请求是谁发来的了(同一个 IP 不代表同一个用户),在 Web 应用中,用户的认证和鉴权是非常重要的一环,实践中有多种可用方案 ...

  7. 在室内停车场使用道路标记语义进行厘米级建图和定位

    标题:Mapping and Localization using Semantic Road Marking withCentimeter-level Accuracy in Indoor Park ...

  8. python中停车收费问题_使用CKRule实现停车场收费计算

    1,收费公式 停车场都有其明确的收费标准,但不同地区地段都有不同的规定,这种规定的可变性比较多,如果要快速实现自动计算停车收费功能,那么使用CKRule是一个很好的选择.而一般的停车场计费都会使用类似 ...

  9. 实习二 栈、队列和递归算法设计 (题目:停车场管理 )

    一.需求分析 1.每一组输入数据包括:汽车"到达"或"离去"信息.汽车牌照号码以 及到达或离去的时刻. 2.输出信息:若是车辆到达,则输出汽车在停车场内或便道上 ...

最新文章

  1. python 整数逆位运算_python训练营:注释、运算符、数据类型与位运算
  2. 2021-7-26 pytorch深度学习框架学习
  3. C++Fenwick tree芬威克树的实现算法(附完整源码)
  4. CSS中颜色代码和单位
  5. API设计原则 - Qt官网的设计实践总结
  6. 【渝粤题库】广东开放大学 社会保障法 形成性考核
  7. 算法不归路之最大子序列(C++版)
  8. 会议通知|2019暑期全国高校Python数据分析与实训课程高级研修班
  9. ARM汇编EQU伪指令
  10. java移动元素_如何通过箭头键连续/平滑地移动元素?
  11. 增强的PolyBase SQL 2019-外部表SQL Server,目录视图和下推式
  12. 图像直方图及直方图均衡总结(一)经典方法(附matlab和opencv端算法实现)
  13. 商城购物系统软件测试,网上商城购物系统黑盒测试
  14. PM-项目管理(Project Management)
  15. jdk8特性 lambda表达式
  16. 射频和无线技术入门--传统技术--7
  17. ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(11)之支付管理及广告管理...
  18. 年轻人频繁辞职的主要原因是什么呢?
  19. 随着XAG加密圈影响力不断增强,吸引全球最大行情站点CMC收录瑞波基因XAG
  20. Amazon推新送货无人机Prime Air

热门文章

  1. macos系统自动安装mysql_macos系统安装mysql
  2. JAVAWEB入门之Servlet的注解配置
  3. java多线程打印helloworld,Java并发编程--多线程之HelloWorld
  4. binlog数据库不写入binlog_京东智联云MySQL数据库如何保障数据的可靠性?
  5. 数据结构与算法分析c++第四版_数据结构与算法 - 时空复杂度分析
  6. electron增加导航按钮_Electron发布6.0 Released版本
  7. ftm模块linux驱动,飞思卡尔k系列_ftm模块详解.doc
  8. jlabel 不能连续两次set_为什么有时连续多次setState只有一次生效?
  9. docker 端口映射 udp_Docker 制作一键安装的本地无污染 DNS 域名服务
  10. java子类怎么编译_java – 无法编译从基类实现抽象方法的子类