20. 用两个栈实现队列 - AcWing题库
站在用户的角度思考问题,与客户深入沟通,找到陆港网站设计与陆港网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、网站设计、企业官网、英文网站、手机端网站、网站推广、域名注册、网站空间、企业邮箱。业务覆盖陆港地区。232. 用栈实现队列
目录
1、java
2、c++
1、java思路:
stk1——输入栈
stk2——输出栈——因为队列是先进先出,所以一旦要输出,则把输入栈中元素存入输出栈,再输出,顺序就是先进先出
不妨举一个例子:
【push,push,pop,peek,push,pop】
【1 ,2 ,null,null, 3 ,null】
java的栈中,stk.pop()——删除栈顶元素并返回栈顶元素值
java中的栈pop和peek的异同:
相同点:都返回栈顶元素的值
不同点:pop会删除栈顶的值,peek不会删除
class MyQueue {
Dequestk1=new LinkedList<>();
Dequestk2=new LinkedList<>();
public void push(int x) {
stk1.push(x);
}
public int pop() {
if(stk2.isEmpty())
{
while(!stk1.isEmpty())
stk2.push(stk1.pop());
}
return stk2.pop();
}
public int peek() {
if(stk2.isEmpty())
{
while(!stk1.isEmpty())
stk2.push(stk1.pop());
}
return stk2.peek();
}
public boolean empty() {
return stk1.isEmpty()&&stk2.isEmpty();
}
}
2、c++stk.pop()——仅仅删除栈顶元素
class MyQueue {
public:
stackstk1,stk2;
void push(int x) {
stk1.push(x);
}
int pop() {
if(stk2.empty())
{
while(!stk1.empty())
{
stk2.push(stk1.top());
stk1.pop();
}
}
int x=stk2.top();
stk2.pop();
return x;
}
int peek() {
int x=this->pop();
stk2.push(x);
return x;
}
bool empty() {
return stk1.empty()&&stk2.empty();
}
};
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧