JS实现利用两个队列表示一个栈的方法


Posted in Javascript onDecember 13, 2017

本文实例讲述了JS实现利用两个队列表示一个栈的方法。分享给大家供大家参考,具体如下:

先看原理图:

JS实现利用两个队列表示一个栈的方法

理清楚思路,再动笔写:

<!DOCTYPE html>
<html>
<head>
  <title>2 Queue</title>
  <meta charset="utf-8"/>
  <script type="text/javascript">
  var arr1 = [];
  var arr2 = [];
    function Queue(arr){
      this.push = function(element){
        return arr.push(element);
      }
      this.pop = function(){
        return arr.shift();
      }
      this.size = function(){
        return arr.length;
      }
      this.display = function(){
        console.log(arr);
      }
    }
    var queue1 = new Queue(arr1);
    queue1.push(1);
    queue1.push(4);
    queue1.push(5);
    queue1.push(7);
    queue1.display();
    var queue2 = new Queue(arr2);
    //利用两个队列实现栈。放在数组中打印
    var res = [], k = 0;
    while(queue1.size()!=0){
      var len = queue1.size();
      for(var i = 0; i<len-1; i++){
        queue2.push(queue1.pop());
      }
      // 打印queue1最后一个元素,并出队
      res[k] = queue1.pop();
      ++k;
      // 队列2的元素放置到队列1中
      for(var i = 0; i<len-1; i++){
        queue1.push(queue2.pop());
      }
    }
    console.log("res:" + res);
    //利用两个队列实现栈。单个弹出
    while(queue1.size()!=0){
      var len = queue1.size();
      for(var i = 0; i<len-1; i++){
        queue2.push(queue1.pop());
      }
      // 打印queue1最后一个元素,并出队
      console.log(queue1.pop());
      // 队列2的元素放置到队列1中
      for(var i = 0; i<len-1; i++){
        queue1.push(queue2.pop());
      }
    }
  </script>
</head>
<body>
</body>
</html>

运行结果:

JS实现利用两个队列表示一个栈的方法

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js操作textarea方法集合封装(兼容IE,firefox)
Feb 22 Javascript
基于jquery自己写tab滑动门(通用版)
Oct 30 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
Sep 10 Javascript
javascript学习笔记之函数定义
Jun 25 Javascript
微信小程序 数据封装,参数传值等经验分享
Jan 09 Javascript
AngularJs 禁止模板缓存的方法
Nov 28 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
Oct 19 Javascript
使用react render props实现倒计时的示例代码
Dec 06 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
Mar 19 Javascript
JS严格模式原理与用法实例分析
Apr 27 Javascript
Vue router安装及使用方法解析
Dec 02 Vue.js
浅谈Vue使用Elementui修改默认的最快方法
Dec 05 Vue.js
node vue项目开发之前后端分离实战记录
Dec 13 #Javascript
详解vue-cli快速构建vue应用并实现webpack打包
Dec 13 #Javascript
Angularjs过滤器实现动态搜索与排序功能示例
Dec 13 #Javascript
Angular4编程之表单响应功能示例
Dec 13 #Javascript
详解webpack require.ensure与require AMD的区别
Dec 13 #Javascript
vue登录路由验证的实现
Dec 13 #Javascript
vue按需加载组件webpack require.ensure的方法
Dec 13 #Javascript
You might like
php smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
php自动提交表单的方法(基于fsockopen与curl)
2016/05/09 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
2019/09/29 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
JavaScript中:表达式和语句的区别[译]
2012/09/17 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
2016/02/29 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
JS异步函数队列功能实例分析
2017/11/28 Javascript
js实现点击图片在屏幕中间弹出放大效果
2019/09/11 Javascript
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
Python写的一个简单监控系统
2015/06/19 Python
Python导出DBF文件到Excel的方法
2015/07/25 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
OpenCV搞定腾讯滑块验证码的实现代码
2019/05/18 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
法国时尚童装网站:Melijoe
2016/08/10 全球购物
欧舒丹比利时官网:L’OCCITANE比利时
2017/04/25 全球购物
Booking.com英国官网:全球酒店在线预订网站
2018/04/21 全球购物
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
小学班级口号
2014/06/09 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
2015年考研复习计划
2015/01/19 职场文书
学生保证书格式
2015/02/27 职场文书
小学庆六一主持词
2015/06/30 职场文书
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js