一.用栈实现队列

用栈实现队列的思路是用两个栈,只是在出队的时候,将第一个栈中的元素移动到另一个栈中,在从第二个栈中出栈就可以了.


import java.util.Stack;public class MyQueue {/*你只能使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。*/private final Stack<Integer> stack1;private final Stack<Integer> stack2;public MyQueue() {stack1 = new Stack<>();stack2= new Stack<>();}public void push(int x) {stack1.push(x);}public int pop() {if(stack2.isEmpty()){moveS1toS2();}return stack2.pop();}public int peek() {if(stack2.isEmpty()){moveS1toS2();}return stack2.peek();}private void moveS1toS2(){while (!stack1.isEmpty()){stack2.push(stack1.pop());}}public boolean empty() {return stack1.empty() && stack2.empty();}
}

二.用一个队列实现栈

用一个queue来存储数据,用一个值来存储栈顶元素.在出栈时,需要把n-2个元素重新出栈,然后加入队列,剩下两个元素,一个作为栈顶,一个作为方法返回.

import java.util.LinkedList;
import java.util.Queue;public class MyStack {/*你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 这些操作。*/private Queue<Integer> queue ;private int top=0;public MyStack() {queue = new LinkedList<>();}public void push(int x) {queue.offer(x);top = x;}public int pop() {int n=queue.size();while (n>2){queue.offer(queue.poll());n--;}top = queue.peek();queue.offer(queue.poll());return queue.poll();}public int top() {return top;}public boolean empty() {return queue.isEmpty();}}

用栈实现队列与用队列实现栈相关推荐

  1. 在java的实现栈的插入数据_Java实现数据结构栈stack和队列Queue

    回顾JDK提供的集合类 容器(集合)框架如下: 集合类存放于java.util包中.集合类存放的都是对象的引用,而非对象本身. 集合类型主要有3种:set(集).list(列表)和map(映射). C ...

  2. JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)

    最近在刷<剑指offer>里的编程题,但是网上关于<剑指offer>的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码 ...

  3. 用栈实现队列和用队列实现栈

    首先需要使用上篇文章(用数组实现栈和队列)中的栈和队列两个类 1.栈实现队列:思路是有两个栈,一个用来放数据(数据栈),一个用来辅助(辅助栈).数据添加时,会依次压人栈,取数据时肯定会取栈顶元素,但我 ...

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

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. import java.util.Stack; public class Solution {      ...

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

    算法:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.<剑指offer> 利用栈来进行操作,代码注释写的比较清楚:首先判断两个栈是否是空的:其次当栈二 ...

  6. 栈和队列之用2个栈实现一个队列

    import java.util.Stack;/*** @author chenyu* 题目:编写一个类,用2个栈实现一个队列,支持队列的基本操作(add poll peek)* 思路:栈的特点是先进 ...

  7. java 栈 队列 接口_Java队列接口

    java 栈 队列 接口 介绍: 队列是FIFO(先进先出)抽象数据类型(ADT). 换句话说,按插入顺序将元素删除. java.util.Queue是Java 中的接口,并且从java.util.C ...

  8. 复习栈和队列,详解最小栈,栈的弹出压入序列,逆波兰表达式求值

    栈和队列的概念 栈:吃进去吐出来 对列:吃进去拉出来 数据结构中的栈和内存中的区别 数据结构中的栈具有后进先出的特性,而内存中的栈是一个内存空间,只不过这个内存空间具与数据结构的栈具有相同的特性. 栈 ...

  9. 两个栈实现一个队列/两个队列实现一个栈

    http://blog.csdn.net/sinat_30472685/article/details/70157227 1两个栈实现一个队列 1.原理分析: 队列的主要操作有两个:入队操作和出队操作 ...

  10. 计算机二级循环队列知识点,考点!计算机二级考试公共基础知识冲刺复习笔记:栈、队列和循环队列...

    小编所收集到的相关计算机二级考试公共基础知识冲刺复习笔记:栈.队列和循环队列的资料 大家要认真阅读哦! 1.栈(Stack)又称堆栈. (1)栈是一种运算受限的线性表,其限制是仅允许在表的一端进行插入 ...

最新文章

  1. 使用nmap-converter将nmap扫描结果XML转化为XLS实战
  2. python语言入门w-Python 基础教程
  3. 键盘工具栏的快速集成--IQKeyboardManager
  4. Linux中对文件描述符的操作(FD_ZERO、FD_SET、FD_CLR、FD_ISSET
  5. 计算机相关专业的自我评价,计算机相关专业的学生自我评价
  6. 【经典】MIT人工智能实验室: 如何做研究?
  7. !/usr/bin/env python和!/usr/bin/python的区别
  8. Struts2接收前端页面数据的方式
  9. php while次数,PHP While 循环
  10. 百度换肤功能实现(vue)
  11. 【修订总结】【五万字深度洞察】毒舌阿朱最看好的企业服务商
  12. 【Pyecharts50例】添加背景图片/Logo
  13. php属相对应年份博客,生肖年份的起点
  14. 图文并茂,动手操作一台宝马X7仪表里程校调,看看你买的二手 “新” 宝马是怎么调出来的!
  15. 在日本名古屋举行的AACSB亚太地区年会将WRDS-SSRN创新奖颁发给南京大学
  16. 这位印度小哥,拯救了山河日下的微软帝国
  17. 麻雀要革命2 第44节:怦然心动的星月童话
  18. yarn和npm常用基本命令安装和卸载
  19. c++ 结构体和vector进行lower_bound和upper_bound
  20. Elasticsearch 6.4 ingest-attachment对文件IK分词器全文检索

热门文章

  1. 【Github上有趣的项目】TensorKart 自动驾驶马里奥赛车(玩不了)
  2. 睡觉时憋气发出“嗯嗯”的声音?
  3. python opencv cv.waitKey(1) 0xFF 的作用
  4. python 计时器 timeit 报错 NameError: name 'xxx' is not defined
  5. python 如何巧妙利用 pypi 官网进行个人包管理(244)
  6. HTML---百度新闻轮播图--定位练习
  7. qpid java_AMQP与QPID简介
  8. LeetCode14 最长公共前缀
  9. mysql数据库连接池_MySql数据库连接池
  10. vue人员轨迹_在vue中高德地图引入和轨迹的绘制的实现