剑指offer——两个栈实现队列

原创 2018年04月15日 14:33:59


   //队列是先进先出,栈是先进后出,所以要两个栈,一个栈进元素,此时只能后来的先出,就需要再来一个栈,先压入第二个栈中,再出第二个栈

import java.util.Stack;

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
 
    public void push(int node) {
        stack1.push(node);//第一个栈 先入栈
    }
    public int pop() {
        if(stack1.isEmpty()&&stack2.isEmpty())
        {return 0;}
        else
        {
               if(stack2.isEmpty())//注意一定要检查第二个栈是否为空
             {
                  while(!stack1.isEmpty())//第一个栈全部入栈到第二个
                  {
                      stack2.push(stack1.pop());
                  }
             }
            return stack2.pop();
        }
        }   
    }

    下面我根据剑指的答案看了一个抛错的方式。。我不怎么会,觉得挺好的

public int pop() throws Exception{ //这里的声明必须有

        
      if(stack1.isEmpty()&&stack2.isEmpty()))
        {
            throw new Exception("栈为空");//new一个Exception
        }
      if (stack2.isEmpty()) {
        while(!stack1.isEmpty()) {
            stack2.push(stack1.pop());
        }
    }
    return stack2.pop();
    }
}

【Python全栈】第五周 Python Web项目开发实现(上)

-
  • 1970年01月01日 08:00

剑指offer《面试题7:用两个栈实现队列》及用两个队列实现一个栈

栈和队列是两个特点相反的数据结构,但联系非常密切。 栈的特点就是“后进先去”,即是最后被压入(push)的栈元素会被第一个弹出(pop)。 队列的特点就是“先进先出”,即是第一个进...
  • SingleLegCat
  • SingleLegCat
  • 2015-07-15 00:40:13
  • 1508

【剑指offer】两个队列实现一个栈

转载请注明出处:    题目:用两个队列模拟一个栈,即用两个队列的出队和入队操作,来实现栈的出栈和入栈操作。    思路:稍微画下草图,便不难想出该题的解决方法,思路如下:    假设有两个队列Q1和...
  • mmc_maodun
  • mmc_maodun
  • 2014-05-06 09:04:50
  • 3165

【剑指Offer】用两个栈来实现队列 解题报告(python)

【剑指Offer】用两个栈来实现队列 解题报告(python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-inter...
  • fuxuemingzhu
  • fuxuemingzhu
  • 2018-03-09 16:34:22
  • 38

剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deletedHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。 我们通过一个具体的例子来分析该队列插...
  • jsqfengbao
  • jsqfengbao
  • 2015-07-27 19:25:01
  • 3025

剑指offer之面试题7:用两个栈实现队列

题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:push操作无所谓栈或队列,都是往里面加入元素。而区别在于pop操作,队列的pop操作取的是先push...
  • sushauai
  • sushauai
  • 2016-04-15 19:32:46
  • 683

剑指offer第五题【用两个栈实现队列】c++实现

用两个栈实现队列 参与人数:3531时间限制:1秒空间限制:32768K通过比例:34.83%最佳记录:0 ms|0K(来自  William_Meng) 题目描述 用两个栈来实现一个队列...
  • u011692312
  • u011692312
  • 2015-10-13 18:11:38
  • 383

《剑指offer》:[7]两个队列实现栈的C++代码实现

问题:两个队列实现栈。     因为队列的特点是先进先出,而栈式先进后出。所以具体的实现步骤如下: (1)判断是否为NULL;如果queue1和queue2都为NULL,则该栈为NULL; (2)如果...
  • gogoky
  • gogoky
  • 2016-05-26 11:21:02
  • 639

剑指offer:用两个栈实现队列、用两个队列实现一个栈(java)

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deletedHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。 该题目,要求我们操作两个先进后出的栈...
  • abc7845129630
  • abc7845129630
  • 2016-09-29 10:59:12
  • 275

剑指Offer:面试题7——用两个栈实现队列(java实现)

题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。首先定义两个栈Stack stack1 = new Stack();//作为进队的端口 Stack sta...
  • lilianforever
  • lilianforever
  • 2016-07-05 13:31:59
  • 1736
收藏助手
不良信息举报
您举报文章:剑指offer——两个栈实现队列
举报原因:
原因补充:

(最多只允许输入30个字)