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 相关文章推荐
Javascript结合css实现网页换肤功能
Nov 02 Javascript
jQuery EasyUI API 中文文档 - Panel面板
Sep 30 Javascript
JavaScript 学习笔记之语句
Jan 14 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
Jun 05 Javascript
如何在Angular.JS中接收并下载PDF
Nov 26 Javascript
Vue实现动态显示textarea剩余字数
May 22 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
May 02 Javascript
10个最受欢迎的 JavaScript框架(推荐)
Apr 24 Javascript
Node.js 多进程处理CPU密集任务的实现
May 26 Javascript
countUp.js实现数字滚动效果
Oct 18 Javascript
详解Vue.js 响应接口
Jul 04 Javascript
SpringBoot在yml配置文件中配置druid的操作
Nov 16 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
根德YB400的电路分析
2021/03/02 无线电
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
vue项目如何监听localStorage或sessionStorage的变化
2021/01/04 Vue.js
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
python实现定时播放mp3
2015/03/29 Python
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
Python分治法定义与应用实例详解
2017/07/28 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
2014年基层党组织公开承诺书
2014/03/29 职场文书
班主任评语大全
2014/04/26 职场文书
大学生求职信范文
2014/05/24 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
2014年感恩节活动策划方案
2014/10/06 职场文书
2014年保育员工作总结
2014/12/02 职场文书
社区活动总结范文
2015/05/07 职场文书
任命书格式模板
2015/09/22 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书