首页
学习
活动
专区
工具
TVP
发布

用两个栈实现队列

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型

初始代码:

import java.util.Stack;

public class Solution {

Stack stack1 = new Stack();

Stack stack2 = new Stack();

public void push(int node) {

}

public int pop() {

}

}

问题分析:这就要了解什么是栈?什么是队列?据我所知,栈的特点是后进先出,先进后出,而队列的特点是先进先出,而出题人的目的却是两个栈来实现一个队列?我的初步思想是先把数都放在栈1中,然后再慢慢把所有的数都放进栈二,事实证明我还是太嫩了,因为这样的话,当你中途pop,然后再push的时候,根本就实现不了队列的形式。

我的想法并没有错,错就错在欠缺考虑栈2是否为空的判断,只要考虑了这个问题就迎刃而解了,编程就是这样,考虑要周全。

我的代码:public class Text {

Stack stack1 = new Stack();

Stack stack2 = new Stack();

public static void main(String[] args){

Text t=new Text();

t.push(6);

t.push(7);

t.push(8);

t.push(9);

t.push(10);

}

public void push(int node) {

stack1.push(node);

}

public int pop() {

if(stack2.isEmpty())

{ //System.out.println(stack1.size());

for(int i=-2;i

{

stack2.push(stack1.pop());

}

}

return stack2.pop();

}

}

分析:我的代码虽然可以通过但是i=-2实在让人匪夷所思!!!

直接把for循环替换成while比较好。

代码如下:public class Text {

Stack stack1 = new Stack();

Stack stack2 = new Stack();

public static void main(String[] args){

Text t=new Text();

t.push(6);

t.push(7);

t.push(8);

t.push(9);

t.push(10);

}

public void push(int node) {

stack1.push(node);

}

public int pop() {

if(stack2.isEmpty())

{ //System.out.println(stack1.size());

while(!stack1.isEmpty())

stack2.push(stack1.pop());

}

return stack2.pop();

}

}

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180310G0ISSW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券