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 相关文章推荐
Web Inspector:关于在 Sublime Text 中调试Js的介绍
Apr 18 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
Jan 09 Javascript
javascript单引号和双引号的区别和处理
May 14 Javascript
javascript学习笔记(六)数据类型和JSON格式
Oct 08 Javascript
基于豆瓣API+Angular开发的web App
Jan 02 Javascript
jQuery添加删除DOM元素方法详解
Jan 18 Javascript
AngularJS模块学习之Anchor Scroll
Jan 19 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
Mar 01 Javascript
vue.js移动端tab组件的封装实践实例
Jun 30 Javascript
关于 angularJS的一些用法
Nov 29 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
Aug 12 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
Jan 18 Javascript
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 session常见问题集锦及解决办法总结
2007/03/18 PHP
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
javascript 操作文件 实现方法小结
2009/07/02 Javascript
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
myFocus slide3D v1.1.0 使用方法与下载
2011/01/12 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
JavaScript实现的石头剪刀布游戏源码分享
2014/08/22 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
JS的函数调用栈stack size的计算方法
2018/06/24 Javascript
vue表单数据交互提交演示教程
2019/11/13 Javascript
vue router 传参获取不到的解决方式
2019/11/13 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
2017/03/11 Python
python文件拆分与重组实例
2018/12/10 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
几个常见的软件测试问题
2016/09/07 面试题
Java如何获得ResultSet的总行数
2016/09/03 面试题
家长对孩子评语
2014/01/30 职场文书
社会学专业求职信
2014/02/24 职场文书
维稳承诺书
2015/01/20 职场文书
毕业欢送会致辞
2015/07/29 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
SQL基础的查询语句
2021/11/11 MySQL
java项目构建Gradle的使用教程
2022/03/24 Java/Android
Python 全局空间和局部空间
2022/04/06 Python
vue封装数字翻牌器
2022/04/20 Vue.js
win11开机发生死循环重启怎么办?win11开机发生死循环重启解决方法
2022/08/05 数码科技