java使用队列实现栈思路_用两个栈实现队列(思路和实现)

该篇博客探讨了如何利用两个栈来实现队列的Push和Pop操作。提供了三种不同的思路及对应的Java代码实现,强调了在处理栈和队列转换时的逻辑。在Pop操作时,确保从栈2弹出元素,或者在栈1为空时将栈1的所有元素转移到栈2。
摘要由CSDN通过智能技术生成

下面要给大家分享的实例是和用两个栈实现队列相关的内容,一起来看看题目以及解题的思路和代码实现方法吧!

题目:

用2个栈来实现一个队列,完成队列的Push以及Pop操作。

注:

队列当中的元素是int类型。

思路1

代码实现:import java.util.Stack;

public class Solution

{

Stack  stack1 = new Stack  ();

Stack  stack2 = new Stack  ();

public void push(int node)

{

stack1.push(node);

}

public int pop()

{

if (stack1.empty() && stack2.empty())

{

throw new RuntimeException("Queue is empty!");

}

if (stack2.empty())

{

while (!stack1.empty())

{

stack2.push(stack1.pop());

}

}

return stack2.pop();

}

}

思路2:

每次psuh是时先将stack2清空放入stck1(保证选入的一定在栈底),stack2始终是用来删除的,在pop前,先将stack1中中的数据清空放入stack2(保存后入的在栈底),stack1始终用于push。

代码实现:import java.util.Stack;

public class Solution

{

Stack  stack1 = new Stack  ();

Stack  stack2 = new Stack  ();

public void push(int node)

{

while (!stack2.isEmpty())

{

stack1.push(stack2.pop());

}

stack1.push(node);

}

public int pop()

{

while (!stack1.isEmpty())

{

stack2.push(stack1.pop());

}

return stack2.pop();

}

}

思路3

代码实现:import java.util.Stack;

public class Solution

{

//负责装元素

Stack  stack1 = new Stack  ();

//负责出元素

Stack  stack2 = new Stack  ();

public void push(int node)

{

stack1.push(node);

}

//主要思想是:stack2有元素就pop,没有元素就将stack1中所有元素倒进来再pop

public int pop() throws Exception

{

if (!stack2.isEmpty())

{

int node = stack2.pop();

return node;

}

else

{

if (stack1.isEmpty())

{

throw new Exception("no valid element");

}

while (!stack1.isEmpty())

{

stack2.push(stack1.pop());

}

return stack2.pop();

}

}

}

更多的实例,可以多多的关注奇Q工具网的java实例栏目来了解哦!

推荐阅读:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值