leetCode(37):Implement Queue using Stacks
2024-09-28 20:30:56
Implement the following operations of a queue using stacks.
- push(x) -- Push element x to the back of queue.
- pop() -- Removes the element from in front of queue.
- peek() -- Get the front element.
- empty() -- Return whether the queue is empty.
Notes:
- You must use only standard operations of a stack -- which means only
push
,
to toppeek/pop from top
,size
,
andis empty
operations are valid. - Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
- You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).
两个栈,一个作为压入栈,一个作为弹出栈。当弹出栈为空时,把压入栈中的数据依次弹出并压入到弹出栈中。
假设两者均为空,说明队列为空。
class Queue {
public:
// Push element x to the back of queue.
void push(int x) {
push_stack.push(x);
} // Removes the element from in front of queue.
void pop(void) {
if (pop_stack.empty())
{
while (!push_stack.empty())
{
pop_stack.push(push_stack.top());
push_stack.pop();
}
if (!pop_stack.empty())
pop_stack.pop();
}
else
{
pop_stack.pop();
}
} // Get the front element.
int peek(void) {
if (pop_stack.empty())
{
while (!push_stack.empty())
{
pop_stack.push(push_stack.top());
push_stack.pop();
}
if (!pop_stack.empty())
return pop_stack.top();
}
else
{
return pop_stack.top();
}
return 0;
} // Return whether the queue is empty.
bool empty(void) {
if (pop_stack.empty() && push_stack.empty())
return true;
else
return false;
} private:
stack<int> pop_stack;
stack<int> push_stack;
};
最新文章
- .net core 用grpc实现微服务
- js对象详解
- 转发(forward)和重定向(sendRedirect)
- Validation failed for one or more entities. See &#39;EntityValidationErrors&#39; property for more details.
- php的if语句单行与多行
- SG函数 专题练习
- Python学习笔记异常
- RobotFrameWork接口报文测试-----(一)简单demo的实现
- CreateEvent的使用方法
- CentOS6.5一键安装MySQL5.5.32(源码编译)
- 阻塞机制下的recv小结
- SQL SERVER大话存储结构(6)_数据库数据文件
- ASP.NET 设计模式:应用程序分层与关注点分离(SoC)
- 常见linux命令用法介绍
- windows 安装zookeeper
- JMX/RMI Nice ENGAGE <;= 6.5 Remote Command Execution
- vue的环境安装(一node环境)
- 阿里云短信服务bug
- html超文本标记语言基础一
- Flask---第一个例子--使用Flask写的【Hello World !】的web程序
热门文章
- 新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛)- XOR(二进制使用)
- 七. 多线程编程6.isAlive()和join()的使用
- 更改vsftpd默认的21端口
- 解析HTML文件 - 运用SgmlReader类来解析HTML文件
- [置顶]
 kubernetes资源类型--deployment
- [置顶]
 cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台
- scala,import test._ ; import test.{ClassA,ClassB}
- flask的session研究和flask-login的session研究
- 【Todo】【转载】Java中的锁机制2 - Lock
- Attribute 和 Parameter 的区别