题目:用两个栈实现一个队列。队列的生命如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。


package 数据结构;import java.util.Stack;/**
*题目:用两个栈实现一个队列。队列的生命如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。
*/
public class Queue {//栈的特点 后进先出
//队列 先进先出
//用两个栈实现一个队列
/***思路:首先,用一个栈用来接收添加的元素。通过观察发现,将接收的队列翻转后,即与队列中存放的元素顺序相同,*所以,可以在另一个栈中接收其翻转的队列,并且在反转后的队列中进行弹栈操作。所以不断访问翻转后的栈的栈顶元素,*如果访问到需要出栈的元素是,停止访问, 进行弹栈。**/Stack<Integer> addStack = new Stack<Integer>();Stack<Integer> popStack = new Stack<Integer>();public void appendTail(int element) {addStack.push(element);}public void deleteHead(int element) {//用来判断当前栈内是否有即将被弹栈的元素,如果没有,则不进行弹栈。Boolean isHasElement = false;while (!addStack.isEmpty()) {popStack.push(addStack.peek());addStack.pop();}for (int a : popStack) {if (a == element) {isHasElement = true;}}if (!popStack.isEmpty()) {if (isHasElement) {while (!popStack.isEmpty() && !popStack.peek().equals(element)) {System.out.println("被弹出的元素:" + popStack.peek().toString() + " ");popStack.pop();}// 最后那个要被弹出的元素if (!popStack.isEmpty()) {popStack.pop();}}while (!popStack.isEmpty()) {addStack.add(popStack.peek());popStack.pop();}}}public String toString() {while (!addStack.isEmpty()) {System.out.println("列表剩余元素:" + addStack.pop().toString());}return null;}/*** 这里有个疑问,不知道是否可以让一个没有在该对列的数字进行出列,如果可以让其出列。* 有两种实现,一:在前面出列时遍历队列中是否有该数,二是在操作deleteHead的时候判断。* 现用方法二。*/public static void main(String[] args) {Queue queue = new Queue();queue.appendTail(1);queue.appendTail(2);queue.appendTail(2);queue.appendTail(2);
//      queue.deleteHead(2);queue.appendTail(3);queue.appendTail(4);queue.appendTail(5);queue.deleteHead(9);queue.appendTail(6);queue.appendTail(4);queue.deleteHead(2);queue.toString();}
}

用Java实现 通过两个栈实现一个队列相关推荐

  1. java实现-两个栈实现一个队列和两个队列实现一个栈

    1.两个栈实现一个队列 思路:压入元素直接入stack1,删除元素先判断stack2中是否为空,如果不为空直接弹出:为空则将stack1中的元素取出压入 stack2中再弹出. 代码: import ...

  2. java 栈和队列实现迷宫代码_算法图解:如何用两个栈实现一个队列?

    本文已收录至 https://github.com/vipstone/algorithm <算法图解>系列. 队列和栈是计算机中两个非常重要的数据结构,经过前面的学习(<队列> ...

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

    题目:两个栈实现一个队列. 栈的特点:先进后出,队列的特点是先进先出 思路:stack1放入数据:pop时,先判断stack2是否为空,如果不为空,直接pop,如果空,则push(stack1.pop ...

  4. 剑指offer五:两个栈实现一个队列

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

  5. 两个栈实现一个队列,两个队列实现一个栈

    题目:用两个栈实现一个队列,用两个队列实现一个栈. 首先要了解栈和队列这两种数据结构各自的特点,栈是一种后入先出(Last In First Out,LIFO)的数据结构,队列是一种先进先出(Firs ...

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

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

  7. 算法图解:如何用两个栈实现一个队列?

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 本文已收录至 https://github.com/vipstone/algori ...

  8. 多态指针访问虚函数不能被继承的类快速排序N皇后问题插入排序堆排序merge归并排序栈上生成对象两个栈实现一个队列...

    多态 /*1. 要想实现覆盖(重写)父类必须声明为virtual,子类可以不声明为virtual.-->FunB()2. 派生类重写基类的虚函数实现多态,要求函数名.参数列表.返回值完全相同.( ...

  9. python 用两个栈实现一个队列

    | 两个栈实现队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元素 ...

  10. python ——两个队列实现一个栈两个栈实现一个队列

    1.两个队列实现一个栈 进栈:元素入队列A 出栈:判断如果队列A只有一个元素,则直接出队.否则,把队A中的元素出队并入队B,直到队A中只有一个元素,再直接出队.为了下一次继续操作,互换队A和队B. p ...

最新文章

  1. selenium-webdriver(python) (十六) --unittest 框架
  2. Atom编写Markdown
  3. lucene学习笔记_学习Lucene
  4. ppt给图片增加高斯模糊_【毕业答辩】PPT美化:如何设计毕业答辩的封面
  5. 代码整洁之道读书笔记----第四章---注释--第二节-坏孩子与坏注释
  6. opencv-python图形图像处理入门基础知识
  7. oracle 罗马数字处理,阿拉伯数字转罗马数字(Roman Numeral Converter)
  8. 计算机国内外SCI/EI收录期刊一览(参考)
  9. 经典的双响io电平转换电路仿真
  10. 蓝桥杯 完全二叉树的权值
  11. apache服务器查看网络爬虫记录的方法说明
  12. methods: 68368 65536
  13. elasticsearch基本使用
  14. HC-05蓝牙模块遇到的问题与解决方法及实现和手机通信
  15. K - 一只小蜜蜂...
  16. Windows200864位操作系统下的SQLPLUS.EXE 无法找到入口解决办法和Oracle环境变量的设置
  17. 计算机不通电维修,显示器不通电维修教程
  18. 2018-ACM省赛
  19. python3 中解决\u8bf7\u6c42\u6210\u529f“格式编码问题
  20. 教师资格证报名-ie浏览器-不兼容

热门文章

  1. leetcode第12题Python版整数转罗马字符串
  2. CefSharp 中过滤图片 RequestHandler
  3. [Android]大牛直播SDK基于unity3d平台的rtmp/rtsp直播播放端SDK接口说明...
  4. 大牛直播SDK-Windows推送端使用说明
  5. npp++常用的匹配正则表达式
  6. java基础实现一个基本的银行管理系统
  7. 【CCNA第二天】路由器密码破解及恢复
  8. arcgis地理配准_【更新69篇】地理数据科学技术文章合集,欢迎大家点赞、在看、转发三连!...
  9. CactiEZ V10.1 中文版 Cacti中文 安装教程cactiezv10.iso
  10. 图说报告|智能技术群的“核聚变”推动智能+时代到来