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 相关文章推荐
VBScript版代码高亮
Jun 26 Javascript
jquery控制select的text/value值为选中状态
Jun 03 Javascript
javascript强制点击广告的方法
Feb 06 Javascript
JavaScript中调用函数的4种方式代码实例
Jul 08 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
Mar 06 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
Jul 04 Javascript
JavaScript实现三级联动菜单效果
Aug 16 Javascript
AngularJs ng-change事件/指令的用法小结
Nov 01 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
Sep 29 Javascript
微信小程序使用GoEasy实现websocket实时通讯
May 19 Javascript
原生js实现滑块区间组件
Jan 20 Javascript
JS函数式编程实现XDM一
Jun 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
php MYSQL 数据备份类
2009/06/19 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
php5与php7的区别点总结
2019/10/11 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
js单例模式的两种方案
2013/10/22 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
JavaScript的Object.defineProperty详解
2018/07/09 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
在JavaScript中使用严格模式(Strict Mode)
2019/06/13 Javascript
原生js实现文件上传、下载、封装等实例方法
2020/01/05 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
Python中字符串对齐方法介绍
2015/05/21 Python
基于python 字符编码的理解
2017/09/02 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
django框架ModelForm组件用法详解
2019/12/11 Python
Python读取Excel一列并计算所有对象出现次数的方法
2020/09/04 Python
Html5 new XMLHttpRequest()监听附件上传进度
2021/01/14 HTML / CSS
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
意大利一家专营包包和配饰的网上商店:Borse Last Minute
2019/08/26 全球购物
大二自我鉴定范文
2013/10/05 职场文书
法律进学校实施方案
2014/03/15 职场文书
经济贸易专业自荐信
2014/06/11 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
基层工作经历证明
2015/06/19 职场文书
windows server2008 开启端口的实现方法
2022/06/25 Servers