Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >由两个栈组成的队列2.由两个栈组成的队列

由两个栈组成的队列2.由两个栈组成的队列

作者头像
仇诺伊
发布于 2018-09-12 06:42:36
发布于 2018-09-12 06:42:36
44300
代码可运行
举报
文章被收录于专栏:佳爷的后花媛佳爷的后花媛
运行总次数:0
代码可运行

2.由两个栈组成的队列


题目:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)

解题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 
 * 编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)。
 * 
 * @author dream
 *
 */
public class Problem02_TwoStacksImplementQueue {

    public static class myQueue{
        
        Stack<Integer> stack1;
        Stack<Integer> stack2;
        
        public myQueue() {
            stack1 = new Stack<Integer>();
            stack2 = new Stack<Integer>();
        }
        /**
         * add只负责往stack1里面添加数据
         * @param newNum
         */
        public void add(Integer newNum){
            stack1.push(newNum);
        }
        
        /**
         * 这里要注意两点:
         * 1.stack1要一次性压入stack2
         * 2.stack2不为空,stack1绝不能向stack2压入数据
         * @return
         */
        public Integer poll(){
            if(stack1.isEmpty() && stack2.isEmpty()){
                throw new RuntimeException("Queue is Empty");
            }else if(stack2.isEmpty()){
                while (!stack1.isEmpty()) {
                    stack2.push(stack1.pop());
                }
            }
            return stack2.pop();
        }
        
        public Integer peek(){
            if(stack1.isEmpty() && stack2.isEmpty()){
                throw new RuntimeException("Queue is Empty");
            }else if(stack2.isEmpty()){
                while (!stack1.isEmpty()) {
                    stack2.push(stack1.pop());
                }
            }
            return stack2.peek();
        }
    }
    
    public static void main(String[] args) {
        myQueue mQueue = new myQueue();
        mQueue.add(1);
        mQueue.add(2);
        mQueue.add(3);
        System.out.println(mQueue.peek());
        System.out.println(mQueue.poll());
        System.out.println(mQueue.peek());
        System.out.println(mQueue.poll());
        System.out.println(mQueue.peek());
        System.out.println(mQueue.poll());
        
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.06.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LeetCode 232:用栈实现队列 Implement Queue using Stacks
Implement the following operations of a queue using stacks.
爱写bug
2019/08/09
4430
Python实战:用栈实现队列
Implement the following operations of a queue using stacks.
conanma
2021/09/04
4730
《剑指offer》之用两个栈来实现一个队列
今天刷的一道题是用两个栈来表示一个队列。我们知道栈和队列的主要区别在于:栈:后进先出 队列:先进先出。
程序员爱酸奶
2020/02/29
4460
栈和队列深入浅出
1. 概念: 栈一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶,另一端称为栈底。栈中的数据元素遵守先进后出的原则。
用户11305962
2024/10/09
1170
栈和队列深入浅出
剑指Offer:面试题09. 用两个栈实现队列
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
Yuyy
2022/06/28
2110
[剑指offer] 用两个栈实现队列
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
尾尾部落
2018/09/04
3520
剑指offer | 面试题7:用两个栈实现队列
提示:1 <= values <= 10000。 最多会对 appendTail、deleteHead进行 10000 次调用
千羽
2021/12/29
2400
剑指offer | 面试题7:用两个栈实现队列
搞定大厂算法面试之leetcode精讲17.栈
搞定大厂算法面试之leetcode精讲17.栈 视频讲解(高效学习):点击学习 目录: 1.开篇介绍 2.时间空间复杂度 3.动态规划 4.贪心 5.二分查找 6.深度优先&广度优先 7.双指针 8.滑动窗口 9.位运算 10.递归&分治 11剪枝&回溯 12.堆 13.单调栈 14.排序算法 15.链表 16.set&map 17.栈 18.队列 19.数组 20.字符串 21.树 22.字典树 23.并查集 24.其他类型题 Stack的特点:先进后出(FILO) 使用场景:十进制转2进制 函数调用
全栈潇晨
2021/12/03
3560
实现一个特殊的栈,实现返回栈中最小元素的操作。
题目实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。 【要求】 1,pop,push,getMin操作的时间复杂度都是0(1)。 2,设计的栈类型可以使用现成的栈结构。
名字是乱打的
2022/05/13
3040
实现一个特殊的栈,实现返回栈中最小元素的操作。
算法-栈stack-用栈实现队列-Leetcode232
这个是 Leetcode 232 题,用两个栈来实现一个先进先出的队列,实现了一个版本。
潇洒
2020/12/17
3010
【Java数据结构】详解Stack与Queue(四)
E绵绵
2024/06/05
1210
【Java数据结构】详解Stack与Queue(四)
Java泛型
  Java中的泛型是由单词“Generic”翻译过来的,“Generic”即表示“一般、通用”的意思。而sun在JDK1.5之后引入的泛型的目的就在于此,将“特殊的,专属的”类型参数化。
云海谷天
2022/08/09
8630
Java泛型
Leetcode232-栈stack-用栈实现队列
这个是 Leetcode 232 题,用两个栈来实现一个先进先出的队列,实现了一个版本。
潇洒
2023/10/23
1570
【剑指Offer】9. 用两个栈实现队列
in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。
瑞新
2020/12/07
2300
我用栈实现了队列!
https://leetcode-cn.com/problems/implement-queue-using-stacks/
代码随想录
2021/07/16
3470
用两个栈实现队列
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
五分钟学算法
2022/01/05
3200
用两个栈实现队列
用两个栈就能造一个队列
今天给大家带来一个有意思的题目,思路很easy,但是刚刷题的小伙伴,示例理解起来可能会有点费劲,花里胡哨一大堆是啥意思啊。在之前的文章《不知道这篇文章合不合你的胃口》中写了栈是先进后出,队列是先进先出。本题让我们用两个先进后出的栈,完成一个先进先出的队列。我们应该怎么实现呢?
公众号袁厨的算法小屋
2020/11/25
4460
用两个栈就能造一个队列
剑指offer--用两个栈实现队列
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
AI那点小事
2020/04/18
2740
用两个栈实现队列
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
用户3003813
2018/09/06
2920
知识改变命运 数据结构【栈和队列面试题】
用户11319080
2024/10/17
790
知识改变命运 数据结构【栈和队列面试题】
相关推荐
LeetCode 232:用栈实现队列 Implement Queue using Stacks
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验